繁体   English   中英

从其他类实例化泛型类型

[英]Instantiating a generic type from a different class

我有两个类, 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()约束

我试图在基本文件(层次结构)中添加new()约束,但是在这种情况下它不起作用,并且我不确定现在可以做什么。 有什么方法可以实例化该通用对象吗?

编辑将约束添加到该方法也不起作用。

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

像下面这样声明课程。 这将强制T具有无参数的公共构造函数,然后您就可以编写new T();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM