限制C#中泛型的类型参数

Mat*_*att 2 c# java generics

我可能会想象事物,但我似乎在Java中回忆起我可以声明一个字段或参数:

public class BarHandler{

    public Class<? extends Foo> fooType;

    public ProcessedBar Process(string xml){
        Foo foo = fooType.GetInstance();
        return foo.process(xml)
    }
}
Run Code Online (Sandbox Code Playgroud)

这对于工厂样式系统非常有用,在这种系统中,您必须能够生成相关类型的新实例.

我试图弄清楚在C#中是否存在这种模拟,或者如果可能这只是Java中可用的东西.

Ken*_*art 5

是的,请参阅通用约束.相当于你的例子是:

public class SomeClass<T>
    where T : Foo
{
    private T fooType;
}
Run Code Online (Sandbox Code Playgroud)

编辑之后的编辑:我相信你指的是通配符,在这种情况下你应该阅读关于泛型的协方差和逆变.