In python
ist möglich, function decorators
zu implementieren, um das Verhalten von Funktionen und Methoden zu erweitern.Implementieren Methode Dekoratoren in C#
Insbesondere migrieren ich eine Gerätelib von python
zu C#
. Die Kommunikation mit dem Gerät kann Fehler erzeugen, die mit einer benutzerdefinierten Ausnahme erneut ausgelöst werden sollten.
In python
würde ich so schreibe:
@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))
Diese Methode Aufruf
try:
self.__handle.write(":source:voltage:level {0}".format(voltage))
except Error:
raise DeviceError("Error while setting output voltage.", "DeviceA")
Mit diesem Muster erweitern würde können Sie leicht wickeln und Methoden erweitern, ohne jede try-except
Klausel schreiben in jede Methode.
Ist es möglich, ein ähnliches Muster mit C#
zu implementieren?
Wenn die Implementierung des Dekorators() benötigt wird, bitte sagen.
eine Alternative, die ich kenne: // stackoverflow.com/questions/7384228/how-can-i-avoid-duplicated-try-catch-blocks) oder Sie könnten versuchen, Postsharp (auch in einer der Antworten erwähnt). Wenn es wirklich möglich ist, Attribute als Methodendekoratoren für diesen Zweck zu verwenden, weiß ich es nicht (ich bezweifle es, aber ich wette, dass jemand das für dich beantworten wird). – bas