0

我正在尝试创建一个接口 'Something<T>并希望限制T拥有一个带有一个 int 参数的构造函数。我可以做类似的事情where : new()。那为什么我做不到呢where T : new(int)

4

1 回答 1

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);
于 2013-09-25T20:35:58.160 回答