3

有没有办法从泛型类中调用扩展,其中变量类也是扩展类?这是一段示例代码。它不编译。

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)”有一些无效参数

4

1 回答 1

2

如果添加泛型类型约束,则可以:

public class GenericFoo<TFrom, TTo>
    where TFrom : MyExtendedType
    where TTo : MyType
{
   public TTo SomeMethod(TFrom A)
   {
      return (TTo)A.Bar();
   }
}

这足以让它编译,但如果从MyTypeto不存在强制转换,您仍然会收到运行时错误TTo

延伸阅读

于 2013-07-17T04:56:49.267 回答