从不同的类实例化泛型类型

时间:2015-07-07 15:12:41

标签: c# generics

我有两个类HierarchyFolder,我用它们来模拟服务器中文件夹的树结构。我使用了通用类型,因为我想让它更具通用性。但是,我遇到了一个问题。

我试图以递归方式导航树以添加新的通用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()约束,但在这种情况下它不起作用,我不知道我现在能做什么。有没有办法实例化这个通用对象?

修改 将约束添加到方法也不起作用。

错误: 非泛型声明不允许有约束

1 个答案:

答案 0 :(得分:2)

如下所示声明类。这将强制T拥有无参数的公共构造函数,然后您就可以编写new T();

class MyClass<T> where T : new() 
{
    public T AddItem(string Path, int ID)
    {
       // your code
    }
}