2010-05-20 42 views
6

¿Es posible hacer lo siguiente con genéricos en C# .NETC# .NET métodos genéricos y herencia

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

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

es decir, tienen un método genérico en una clase base y luego usar un tipo específico para ese método en una subclase.

Respuesta

7

El parámetro de tipo debe ser declarada con el tipo y la subclase declarará el tipo específico en su declaración de herencia:

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

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

genial que funciona gracias. – eaglestorm

1

La razón es que se estaría dando única implementación para un caso especial. La clase base requiere que implemente un MethodB que pueda funcionar para cualquier tipo T. Si lo implementa solo para DateTime y si alguien llama, por ejemplo, ((A)obj).MethodB<int> ¡entonces no tiene ninguna implementación que pueda ser utilizada!