我想要这样的东西:
class Foo<T>{...}
class Boo<T>{
Queue<T> stuff = new Queue<T>();
public void Boo(Foo<T>){...};
}
...
//Extract the generic type - string - to define the type
//of MyBoo.
var MyBoo = new Boo(new Foo<string>());
我收到错误“通用类型‘Boo’需要‘1’类型参数。是的,我通过显式声明模板类型解决了这个问题,但我想知道是否有一种方法可以隐式提取该类型,而不必明确说明。
这个其他帖子可能相关 https://stackoverflow.com/questions/1489112/c-generics-determine-generic-type-from-consuming-generic-method,但我不确定。
您不能直接使用泛型类型的构造函数隐式执行此操作,但可以从泛型method,例如在非泛型类中:
public static class Boo
{
public Boo<T> Create<T>(Foo<T> foo)
{
return new Boo<T>(foo);
}
}
Then:
// myBoo will be inferred to be of type Boo<string>
var myBoo = Boo.Create(new Foo<string>());
当然,它不have成为另一个类Boo
- 它可能是完全不同的东西,也可能是其他东西的实例方法:
var factory = new BooFactory();
var myBoo = factory.Create(new Foo<string>());
重要的一点是它是通用的method- 可以推断泛型方法的类型参数,但不能推断泛型类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)