簡體   English   中英

我可以從泛型類中調用擴展方法嗎?

[英]Can I call an extension method from inside a generic class?

有沒有辦法從泛型類中調用擴展,其中變量類也是擴展類? 這是一段代碼示例。 它不編譯。

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();
   }
}

這將足以讓它進行編譯,但如果從MyTypeTTo不存在任何TTo ,您仍會遇到運行時錯誤。

進一步閱讀

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM