有没有一种方法可以从泛型类(其中变量类也是扩展类)中调用扩展?这是示例代码。它不会编译。
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)'有一些
无效的论点
最佳答案
您可以添加通用类型约束:
public class GenericFoo<TFrom, TTo>
where TFrom : MyExtendedType
where TTo : MyType
{
public TTo SomeMethod(TFrom A)
{
return (TTo)A.Bar();
}
}
尽管如果没有从
MyType
到TTo
的强制类型转换,仍然会出现运行时错误,但这足以使其编译。进一步阅读
where (generic type constraint) (C# Reference)