我有两个类Hierarchy
和Folder
,我用它们来模拟服务器中文件夹的树结构。我使用了通用类型,因为我想让它更具通用性。但是,我遇到了一个问题。
我试图以递归方式导航树以添加新的通用T元素,具有以下功能:
public T AddItem (string Path, int ID)
{
T Result = default(T);
if (this.Path == Path)
{
Result = new T ();
Items.Add (ID, Result);
}
return Result;
}
但new T()
不起作用,不足为奇。错误是:
无法创建变量类型'T'的实例,因为它没有new()约束
我尝试在基本文件(Hierarchy)中添加new()约束,但在这种情况下它不起作用,我不知道我现在能做什么。有没有办法实例化这个通用对象?
修改 将约束添加到方法也不起作用。
错误: 非泛型声明不允许有约束
答案 0 :(得分:2)
如下所示声明类。这将强制T
拥有无参数的公共构造函数,然后您就可以编写new T();
class MyClass<T> where T : new()
{
public T AddItem(string Path, int ID)
{
// your code
}
}