我想用一个通用类型输入创建一个通用方法,该输入具有所提供类型输入的通用参数的返回类型。
在此问题的上下文中,不可以选择具有实例参数,因为在调用者上下文中将不存在实例。
给出以下界面:
interface IFoo<T> { }
我想要实现的是类似于以下不当方法声明的内容。
TInner GetFoo<T>() where T : IFoo<TInner>;
T GetFoo<IFoo<T>>();
将这样使用:
class FooA : IFoo<int> { }
int foo = GetFoo<FooA>();
如何正确声明这种方法(如果可能的话)?
谢谢!
答案 0 :(得分:1)
正如elgonzo的评论中所建议的那样,最自然的解决方案是声明形式
TInner GetFoo<T, TInner>() where T : IFoo<TInner>
尽管您将其声明为TInner GetFoo<T>() where T : IFoo<TInner>
的想法是明智的,但目前尚不支持。它类似于更高种类的参数多态性,这是功能性编程爱好者急切期待的功能。