Ich habe separate Implementierungen einer generischen Schnittstelle (eine für Klassen, eine für Strukturen) und ich möchte eine statische Create-Methode verwenden, die Konstruktion behandelt. Aber ich kann nicht herausfinden, wie man den Compiler dazu bringt, mir bezüglich der korrekten Typabhängigkeit zu vertrauen. Ich verstehe, warum es nicht funktioniert, aber wie komme ich damit klar?Konstruieren von generischen Typen ohne die class/struct-Einschränkung
public interface ISomething<T> { }
internal class SomethingForReferenceTypes<T>
: ISomething<T> where T : class { }
internal class SomethingForValueTypes<T>
: ISomething<T> where T : struct { }
public static class Something
{
public static ISomething<T> Create<T>()
{
bool TIsAReferenceType = IKnowHowToFigureThisOut();
if (TIsAReferenceType)
return new SomethingForReferenceTypes<T>(); // ← T is not accepted here.
else
return new SomethingForValueTypes<T>(); // ← T is not accepted here.
}
}
sieht aus wie Sie Reflektion verwenden müssen, um die generischen Typen zu machen und sie dann zu aktivieren – Nkosi