有没有办法从泛型类中调用扩展,其中变量类也是扩展类?这是一段代码示例。它不编译。
public class GenericFoo<TFrom,TTo>
{
public TTo GenericFoo(TFrom A)
{
return A.Bar();
}
}
public static class Extensions
{
public static MyType Bar(this MyExtendedType source)
{
return new MyType();
}
}
这会产生以下错误:
'TFrom'不包含'Bar'的定义和最佳扩展名 方法过载 'MyNamespace.Extensions.Bar(MyNamespace.MyExtendedType)'有一些 无效的参数
答案 0 :(得分:2)
如果添加泛型类型约束:
,则可以public class GenericFoo<TFrom, TTo>
where TFrom : MyExtendedType
where TTo : MyType
{
public TTo SomeMethod(TFrom A)
{
return (TTo)A.Bar();
}
}
这足以让它进行编译,但如果从MyType
到TTo
不存在任何强制转换,您仍会遇到运行时错误。
进一步阅读