Действительно ли возможно сделать следующее с дженериками в C#.NET
public abstract class A
{
public abstract T MethodB<T>(string s);
}
public class C: A
{
public override DateTime MethodB(string s)
{
}
}
т.е. имейте общий метод в базовом классе и затем используйте определенный тип для того метода в sub классе.
Параметр типа должен быть объявлен вместе с типом, и подкласс объявит конкретный тип в своем объявлении наследования:
public abstract class A<T>
{
public abstract T MethodB(string s);
}
public class C: A<DateTime>
{
public override DateTime MethodB(string s)
{
...
}
}
Нет.
Причина в том, что вы предоставите реализацию только для одного особого случая. Базовый класс требует, чтобы вы реализовали MethodB
, который может работать для любого типа T
. Если вы реализуете его только для DateTime
и если кто-то вызовет, например, ((A)obj).MethodB
, то у вас не будет никакой реализации, которую можно было бы использовать!