为什么我不能为类型参数指定构造函数限制:new()

时间:2013-09-25 20:20:27

标签: c#

我正在尝试创建一个接口“Something<T>,并希望限制T使用一个带有一个int参数的构造函数。我可以做where : new()之类的事情。那么为什么我不能成功where T : new(int)

1 个答案:

答案 0 :(得分:1)

您可以通过将T的实例化推迟给用户来支持这一步骤。类似的东西:

class MyTCreator<TParam, T>
{
    private Func<TParam, T> generator;
    public MyTCreator(Func<TParam, T> generator)
    {
        this.generator=generator;
    }
    public T CreateT(TParam param)
    {
        return generator(param);
    }
}

并像这样使用你的课程:

var creator = new MyTCreator<long, DateTime>(ticks => new DateTime(ticks));
DateTime dt = creator.CreateT(12345L);