Generische Vererbung [c#]
-
Hallo, ich möchte eine generische Klasse erstellen, der ich angeben kann, von welcher Basisklasse sie erben soll. Allerdings bringt mir mein Compiler (VS2005) immer wieder
folgende Fehlermeldung:"Die Ableitung von "BaseT" ist nicht möglich, weil es sich um einen Typparameter handelt."
Hier mein Testcode:
namespace GenericsTest { public class VererbungsTest<BaseT,ValueT> : BaseT { private ValueT _inhalt; public VererbungsTest() { this._inhalt = default(ValueT); } public ValueT Inhalt { get { return this._inhalt; } set { this._inhalt = value; } } } public class TestBasisKlasse1 { } public class TestBasisKlasse2 { } static class main { static void Main() { // Dieses Objekt soll als Basisklasse "TestBasisKlasse1" haben und verwaltet strings.. VererbungsTest<TestBasisKlasse1, string> test1 = new VererbungsTest<TestBasisKlasse1, string>(); test1.Inhalt = "abc"; System.Console.WriteLine(test1.Inhalt); // Dieses Objekt soll als Basisklasse "TestBasisKlasse2" haben und verwaltet floats.. VererbungsTest<TestBasisKlasse2, float> test2 = new VererbungsTest<TestBasisKlasse2, float>(); test2.Inhalt = 12.3f; System.Console.WriteLine(test2.Inhalt); System.Console.ReadLine(); } } }
Ich hoffe, dass mir jemand einen nützlichen Tip, Link geben kann, wie ich das Problem löse ! Danke.
Ich habe bereits versucht das irgendwie mit where und den Einschränkungen (http://msdn2.microsoft.com/de-de/library/d5x73970.aspx) zu lösen, aber ich schaff das irgendwie nicht...
-
Du kannst bei Generics nicht von Typparametern ableiten. Das sind keine Templates wo der Maschinencode erst bei Instanziierung erzeugt wird.