我正在尝试创建一个接口 'Something<T>
并希望限制T
拥有一个带有一个 int 参数的构造函数。我可以做类似的事情where : new()
。那为什么我做不到呢where T : new(int)
?
问问题
82 次
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 回答