作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个具有单个泛型类型输入的泛型方法,该输入具有所提供类型输入的泛型参数的返回类型。
在这个问题的上下文中,有一个实例参数不是一个选项,因为调用者上下文中不存在实例。
给定以下界面:
interface IFoo<T> { }
我想要实现的是与以下不正确方法声明类似的东西。
TInner GetFoo<T>() where T : IFoo<TInner>;
T GetFoo<IFoo<T>>();
可以这样使用:
class FooA : IFoo<int> { }
int foo = GetFoo<FooA>();
如何正确声明这样的方法(如果可能的话)?
提前致谢!
最佳答案
正如 elgonzo 在评论中所建议的,解决您的问题最自然的方法是声明表单
TInner GetFoo<T, TInner>() where T : IFoo<TInner>
尽管您打算将其声明为 TInner GetFoo<T>() where T : IFoo<TInner>
是明智的,目前不支持。它类似于更高级的参数多态性,这是函数式编程爱好者期待已久的功能。
关于c# - 这样的嵌套泛型方法怎么解决呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56435616/
我是一名优秀的程序员,十分优秀!