Generika, Enums und benutzerdefinierte Attribute - ist das möglich?

9

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.

    
TheEdge 08.08.2013, 03:30
quelle

2 Antworten

2

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 :

zu übergeben %Vor%

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:

%Vor%     
Vyacheslav Volkov 08.08.2013, 05:05
quelle
2

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 ...

%Vor%     
Konstantin 08.08.2013 04:40
quelle

Tags und Links