我很可能会想象一些事情,但我似乎记得在 Java 中我可以这样声明一个字段或参数:
public class BarHandler{
public Class<? extends Foo> fooType;
public ProcessedBar Process(string xml){
Foo foo = fooType.GetInstance();
return foo.process(xml)
}
}
这对于工厂风格的系统很有用,例如,您必须能够生成相关类型的新实例。
我想弄清楚 C# 中是否有类似的东西,或者这是否只是 Java 中可用的东西。
最佳答案
是的,参见 generic constraints .与您的示例等效的是:
public class SomeClass<T>
where T : Foo
{
private T fooType;
}
编辑后编辑:我相信你指的是 wildcards , 在这种情况下你应该阅读 covariance and contravariance关于泛型。
关于c# - 在 C# 中限制泛型的类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3355600/