我有以下内容:
public class Foo<T> : Goo
where T: SomeClass<?>, new()
我知道 ?不是 C# 中的真正通配符,但是,您将如何在 C# 中正确编写它,以便 SomeClass 可以将任何类作为参数?我尝试使用对象,但随后出现错误“...没有来自...的隐式引用转换”
谢谢!
您必须指定第二个类型参数(即Y
在我的示例中),注意它Y
可以是任何东西,因为没有限制,甚至与T
.
public class Foo<T, Y> : Goo
where T: SomeClass<Y>, new()
如果您只需要SomeClass<Y>
在泛型类中使用,另一种选择是仅指定第二个类,您不需要 new() 限制,因为编译器事先知道SomeClass<T>
具有默认构造函数:
public class Foo<Y> : Goo{
public SomeClass<Y> Value;
public void Setup() { Value = new SomeClass<Y>(); }
}