Entschuldigung für die Menge an Code, aber es ist einfacher, es so zu erklären.
Ich habe ein benutzerdefiniertes Attribut CustomUserData wie folgt implementiert:
%Vor%und eine Erweiterungsmethode für enums als:
%Vor%Ich habe dann eine Hilfsklasse, die eine Enumeration serialisiert / deserialisiert, die wie folgt mit benutzerdefinierten Daten verknüpft ist:
%Vor%Dies ist jedoch spezifisch bis ParameterDisplayModeEnum und ich habe eine Reihe von Enums, die ich für die Serialisierung / Deserialisierung verwenden muss, also würde ich lieber eine generische haben wie:
%Vor%Dies funktioniert jedoch nicht, da GetCustomUserData () nicht aufgerufen werden kann. Irgendwelche Vorschläge? Ich kann die Verwendung des benutzerdefinierten Attributs oder die Verwendung der Enums nicht ändern. Ich suche nach einem generischen Weg, die Serialisierung / Deserialisierung durchzuführen, ohne jedes Mal eine konkrete Listenhilfsklasse schreiben zu müssen.
Alle Vorschläge geschätzt.
Probieren Sie diesen Code:
%Vor%UPDATE 0
Um klar zu sein, da wir Generics nicht auf Enum beschränken können, sollten wir prüfen, ob der Typ TEnum
eine Enumeration ist, und eine Exception werfen, wenn dies nicht der Fall ist.
Wenn wir die Methode FromDatabase
verwenden, wissen wir, dass TEnum
Enumeration ist, und wir können diesen Code schreiben, um eine Enumeration an die angegebene TEnum
:
In der ToDatabase
-Methode wissen wir auch, dass TEnum
enum ist und wir können diesen Code schreiben, um TEnum
in den Enum
-Typ zu konvertieren:
Idealerweise sollten Sie TEnum auf Enum beschränken, aber das wird nicht funktionieren, da Sie Generics nicht auf Enum beschränken können Microsoft
Aber versuchen Sie es, es könnte den Trick tun ...