假设我有这样的接口和具体的实现
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>()
?