2010-05-20 12 views
6

Ist es möglich, die folgenden mit Generika in C# .NETC# .NET generische Methoden und Vererbung

public abstract class A 
{ 
    public abstract T MethodB<T>(string s); 
} 

public class C: A 
{ 
    public override DateTime MethodB(string s) 
    { 
    } 
} 

dh eine generische Methode in einer Basisklasse zu tun und dann einen bestimmten Typ für diese Methode in ein verwenden Unterklasse.

Antwort

7

Die Typ-Parameter mit dem Typ deklariert werden sollen, und die Unterklasse wird die spezifische Art in seiner Vererbungserklärung an:

public abstract class A<T> 
{ 
    public abstract T MethodB(string s); 
} 

public class C: A<DateTime> 
{ 
    public override DateTime MethodB(string s) 
    { 
     ... 
    } 
} 
+0

cool das funktioniert dank. – eaglestorm

1

Nr

Der Grund dafür ist, dass Sie nur die Umsetzung bereitstellt würden für einen speziellen Fall. Für die Basisklasse müssen Sie eine MethodB implementieren, die für jeden Typ T funktionieren kann. Wenn Sie es nur für DateTime implementieren und wenn jemand zum Beispiel ((A)obj).MethodB<int> aufruft, dann haben Sie keine Implementierung, die verwendet werden könnte!