gpt4 book ai didi

c# - 我可以从泛型类中调用扩展方法吗?

转载 作者:行者123 更新时间:2023-11-30 17:04:18 26 4
gpt4 key购买 nike

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

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' does not contain a definition for 'Bar' and the best extension method overload 'MyNamespace.Extensions.Bar(MyNamespace.MyExtendedType)' has some invalid arguments

最佳答案

如果您添加一个通用类型约束,您就可以:

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

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

延伸阅读

关于c# - 我可以从泛型类中调用扩展方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17691388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com