Ich bin neu in Generika in C#, und ich versuche, eine Methode zu erstellen, die Generika verwenden wird. Ich stolperte über das where-Schlüsselwort, als ich versuchte, eine lokale Variable zu erstellen, also bin ich sicher, dass es Teil der Lösung sein wird.
Der Grund dafür ist, ich habe mehrere verschiedene Enum-Variablen, aber die Methode würde das gleiche zu jeder tun (eine Zeichenfolge, die eine der Enum definierten Werte ist, schalten Sie es auf, mit der Enum wie ein Bit-Feld).
Ich habe die meisten dieser zusammen, der Teil, den ich jetzt an ist in der Lage, die generische Methode zu sagen, es ist ok, um "|=" zu ermöglichen, wie ich sicher bin, dass jeder Typ übergeben in den Operator unterstützen wird.
Ich möchte die Allgemeingültigkeit möglichst beibehalten, also entweder eine Aufzählung oder eine Liste, und ich würde je nach Typ unterschiedliche Codepfade ausführen.
Ein Beispiel für das, was ich meine, ist
enum someType { value1 = 1<<0, value2 = 1<<1, value3 = 1<<2 }; // and so on
// some more enums
private T someMethod<T>(string myIdentifyers)
where T: new()
{
// suppose myIdentifiers is 1 more more of the valid enum options
// assume that the correct strings and enum combinations will be passed
T retval = new T();
while () {
// assume a loop with a method call that parses off one identifyer at a time
// if I have to convert the enum to an int first, so be it, but
// at this point I can't tell it that a cast to int exists
retval |= (T)System.Enum.Parse( typeof(T), oneIdentifyer, false );
}
return retval;
}