我有一个要在外部扩展的通用类。
如果我属于 的类MyGenericClass<T>
,我可以简单地定义一个方法,例如
public MyReturnType MyMethod()
{
MyReturnType m;
//some code
return m;
}
然后可以像往常一样由实例调用myGenericClass.MyMethod();
但是,我想使用扩展在外部添加此功能。
以下不编译:
public static MyReturnType MyMethod(this MyGenericClass<T> mgc)
{
MyReturnType m;
//some code
return m;
}
因为无法推断类型 T。
以下确实编译:
public static MyReturnType MyMethod<T>(this MyGenericClass<T> mgc)
{
MyReturnType m;
//some code
return m;
}
但是,这需要我输入myGenericClass.MyMethod<MyT>();
,更糟糕的是,MyMethod 中的“T”没有与 MyGenericClass 中的“T”相同的约束——这两个泛型是独立的(并且依赖于用户对两个类使用相同的类型和功能)。
我该如何正确声明?
谢谢 Haighstrom