[英]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();
}
}
這將足以讓它進行編譯,但如果從MyType
到TTo
不存在任何TTo
,您仍會遇到運行時錯誤。
進一步閱讀
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.