Generic Type conditions "enum" oder "uint"?
-
Hallo Leute,
kann ich keine Generic Interface implementieren mit folgenden einschränkungen?
interface IFoo<T> where T: enum { }
oder
interface IFoo<T> where T: uint { }
ich will das T immer zu "uint" casten können!?
Grüße
-
Mit der
where
-Klausel sagst du ja vor allem, dass der Generic-Parameter etwas bestimmtest implementieren soll oder von einer Basisklasse abgeleitet ist. DaSystem.UInt32
ein Value-Type ist, wird dies logischerweise nicht gehen. Das Gleiche gilt fürenum
.Das einzige was du machen könntest, ist ein Contraint für
System.IConvertible
zu setzen.Aber das Ganze scheint mir ein wenig fragwürdig zu sein. Wieso nimmst du nicht einfach gleich ein
uint
?Grüssli
-
Es geht um flogendes:
Ich habe eine Variable uint, welche eine Bitmask darstellt. Nun kann diese unterschiedliche Semantiken haben, je nach Implementation. Diese Semantiken will ich gern als Enum beschreiben. Ich mach das jetzt so, dass ich jedes enum semantik abhängig der Verwendung auf uint caste!
-
Am Rande: Typparameter können nur eingeschränkt werden nach struct, class, new(), Basisklassen-Name, Interface-Name
NullBockException schrieb:
Es geht um flogendes:
Ich habe eine Variable uint, welche eine Bitmask darstellt. Nun kann diese unterschiedliche Semantiken haben, je nach Implementation. Diese Semantiken will ich gern als Enum beschreiben. Ich mach das jetzt so, dass ich jedes enum semantik abhängig der Verwendung auf uint caste!
Du hast eine Variable uint.
Außerdem hast Du hast ein interface IFoo.
Das uint ist irgendwie eine Eingabe für Implementationen des IFoo.
Jede Implementierung des Interfaces hat eine verschiedene Verwendung für das uint. Klar soweit. Jede Implementierung beschreibt numal ihre ganz spezielle Semantik.
Nun willst Du die Semantik von einem Enum abhängig machen ... häh?!Die Semantik steckt schon in den Implementationen und muss nicht zusätzlich mit einem enum ausgedrückt werden.
Vielleicht suchst Du eine Möglichkeit, die Implementation in Abhängigkeit des Enum-Wertes zu wählen? Dann ist eine Einfache Fabrik die Antwort. Wahrscheinlich willst Du aber was ganz anderes. Deshalb ... Bitte beschreibe Dein Problem (sehr viel) genauer. Das Forum stürzt nicht ab, wenn man mehr als drei Sätze pro Beitrag verfasst