带有where子句的泛型类

时间:2013-01-10 13:51:28

标签: c# generics

我确实在网上搜索了一些关于在创建泛型类时使用where子句的示例。其中大部分都展示了不太真实的用法。

有人能够指出一些不错的例子。

1 个答案:

答案 0 :(得分:2)

实际使用情况可能是您希望使用从接口派生的特定类型(例如),而无需自己创建实例。

示例:

class FooReader<T> where T : IFoo, new()
{
    public int Read()
    {
        var foo = new T();
        return foo.Read();
    }
}

class Foo : IFoo
{
    public int Read()
    {
        return 42;
    }
}

interface IFoo
{
    int Read();
}

用法:

var reader = new FooReader<Foo>();
var result = reader.Read();