在Python中,可以使用函数装饰器来扩展函数和方法的行为。特别是我正在将一个设备库从Python迁移到C#。与设备进行通信可能会产生错误,应该使用自定义异常重新引发它们。在Python中,我会这样写:
@device_error_wrapper("Device A", "Error while setting output voltage.")
def set_voltage(self, voltage):
"""
Safely set the output voltage of device.
"""
self.__handle.write(":source:voltage:level {0}".format(voltage))
该方法调用将扩展为try:
self.__handle.write(":source:voltage:level {0}".format(voltage))
except Error:
raise DeviceError("Error while setting output voltage.", "DeviceA")
有了这个模式,你可以轻松地包装和扩展方法,而无需在每个方法中编写每个try-except
子句。
是否可以使用C#
实现类似的模式?
如果需要实现装饰器(device_error_wrapper
),请告诉我。