假设我有这样的接口和具体的实现
public interface IMyInterface<T>
{
T My();
}
public class MyConcrete : IMyInterface<string>
{
public string My()
{
return string.Empty;
}
}
所以我创建了 MyConcrete 实现strings,我可以有一个更具体的实现int。没关系。但是假设我想做同样的事情,但是使用泛型方法,所以我有
public interface IMyInterface2
{
T My<T>();
}
public class MyConcrete2 : IMyInterface2
{
public string My<string>()
{
throw new NotImplementedException();
}
}
所以我有相同的IMyInterface2,但它通过T My<T>(). 在我的具体类中,我想实现My行为,但对于具体数据类型 - string。但是 C# 不允许我这样做。
我的问题是为什么我不能这样做?换句话说,如果我可以创建MyInterface<T>as的具体实现MyClass : MyInterface<string>并在这一点上停止泛型,为什么我不能用泛型方法来做到这一点 - T My<T>()?