C# 从其他类实例化泛型类型
我有两个类,C# 从其他类实例化泛型类型,c#,generics,C#,Generics,我有两个类,Hierarchy和Folder,我用它们来建模服务器中文件夹的树结构。我使用了泛型类型,因为我想让它更通用一些。然而,我遇到了一个问题 我尝试递归地导航树以添加一个新的通用T元素,并使用以下函数: public T AddItem (string Path, int ID) { T Result = default(T); if (this.Path == Path) { Result = new T (); Items.Add (ID, Re
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;
}
但是newt()
不起作用,这并不奇怪。错误是:
无法创建变量类型“T”的实例,因为它没有new()约束
我试图在基础文件(层次结构)中添加一个新的()约束,但在这种情况下它不起作用,我不确定现在可以做什么。有什么方法可以实例化这个通用对象吗
编辑
将约束添加到方法也不起作用
错误:
非泛型声明不允许使用约束如下声明类。这将强制
T
拥有一个无参数的公共构造函数,然后您将能够编写newt()代码>
classmyclass,其中T:new()
{
公共T附加项(字符串路径,整数ID)
{
//你的代码
}
}
无法向方法添加新
约束,因为它没有泛型声明。在这种情况下,约束需要位于父类上。
class MyClass<T> where T : new()
{
public T AddItem(string Path, int ID)
{
// your code
}
}