C# Define base-Klasse von <T>

Ich versuche einen Weg zu finden, leiten Sie eine Klasse von einer generischen Basisklasse. Sagen:

sealed public class Final : Base<Something>
{

}

public class Base<T> : T
    where T : Anything //<-- Generics do not allow this
{

}

In C# scheint dies nicht möglich zu sein.

Gibt es eine andere Lösung, die etwas erreichen ähnlich wie diese?

Fand ich diese StackOverflow-Frage, aber es scheint nicht, um das Problem zu lösen, oder zumindest ich verstehe nicht, wie es sollte.

EDIT:

Dem Ergebnis würde ich mag, um in der Lage zu sein, etwas zu tun:

Anything[] anything;
//Assign some Instances to anything 

foreach(Final final in anything){
     //do something with final
}
möglich, Duplikat der Vererbung auf eine eingeschränkte generischen Typ-parameter
Wenn Sie es verwenden möchten, in einem foreach Sie implementieren müssen, um IEnumerable<Final>.
In meinem edit oben, "alles" ist ein array. So brauche ich nicht zu tun.
nur ein MoveNext und Current Methode genügen würde, keine Notwendigkeit zur Umsetzung der gesamten IEnumerable - Schnittstelle.
Was Sie tun möchten, ist das nicht logisch Klang und funktioniert nicht. Können Sie nicht ableiten, die von einem Typ-argument, wenn es die Werte zur Laufzeit. Wie würden Sie wissen, welche Methoden Sie können zum Beispiel überschreiben? Ich glaube, Sie brauchen, um zu überdenken Sie Ihre design, so dass Sie die Ableitung von was auch immer geben T ist, und verwenden Sie dann die DerivedT beim instanziieren Base anstatt zu versuchen, eine Ableitung von T im Base<T>. Macht das Sinn?

InformationsquelleAutor Noel Widmer | 2015-05-04

Schreibe einen Kommentar