【问题标题】:Generic function and new constraint泛型函数和新约束
【发布时间】:2015-04-27 06:03:46
【问题描述】:
如何使用两个参数,而一个继承自 IProject 而另一个具有 new() 约束?以下内容未通过编译,并出现 “无法创建变量类型 'T' 的实例,因为它没有 new() 约束”错误。
public static T CreateNewProject<T, V>(string token, string projectName) where V : IProject<T>, T new()
{
T project = new T();
}
【问题讨论】:
标签:
c#
.net
oop
generics
interface
【解决方案1】:
如果要对多个参数应用约束,则需要添加第二个where 为:
where V : IProject<T>
where T : new()
而且,你需要从你的方法中返回一些东西:
public static T CreateNewProject<T, V>(string token, string projectName)
where V : IProject<T>
where T : new()
{
return new T();
}
P.S:为了应用new 约束,类型参数必须有一个公共无参数构造函数。
阅读This了解更多信息。