c# - 在 C# 中限制泛型的类型参数

标签 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)
    }
}

这对于工厂风格的系统很有用,例如,您必须能够生成相关类型的新实例。

我想弄清楚 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/

相关文章:

Java 泛型 : Clean way to process two generic types using one function signature

c# - 在运行时更改 DbContext 连接

c# - 需要包含()相关实体但没有选择这样做

java - Log4j2异步记录器默认缓冲区大小

java - 确定 quartz 触发器的暂停状态?

java - 创建一个静态字段,它是使用泛型和通配符的嵌套列表

.net - 有机会合法投吗?

c# - 如何在 C# 中将字符串偏移量转换为时间跨度

c# - 将文本拖放到文本框和特殊字符中

java - AWS Java API授权不一致