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