gpt4 book ai didi

c# - 使用 C# 泛型进行扩展?

转载 作者:太空狗 更新时间:2023-10-30 00:46:06 26 4
gpt4 key购买 nike

我想创建一个可扩展的嵌套结构,看起来我应该能够使用泛型来做到这一点,尽管我可能没有“正确地”使用它们。

我希望能够从 GroupType 和/或 OptionType 创建子类。问题是我无法对泛型类型执行 new 操作,即使我指定它们只能是特定的基类型也是如此。

有什么方法可以做我想做的事吗?

public class AllInfo<GroupType, OptionType> 
where GroupType: GroupBase<OptionType>
where OptionType: OptionBase
{
public List<string> Names { set; get; }
public List<GroupType> Groups { set; get; }

public AllInfo()
{
DataSet ds = DatabaseRetreival();
this.Groups.add(new GroupType(ds["Name"], ds["Type"]));
}

}

public class GroupBase<OptionType>
where OptionType: OptionBase
{
public string Name { set; get; }
public string Type { set; get; }
public List<OptionType> Options { set; get; }

public GroupBase(string name, string type)
{
this.Name = name;
this.Type = type;

DataSet ds = DatabaseRetreival(this.Type);
this.Options.Add(new OptionType(ds["Name"]));
}
}

public class OptionBase
{
public string Name { set; get; }

public OptionBase(string name)
{
this.Name = name;
}
}

最佳答案

您必须指定类必须具有默认构造函数。

where GroupType: GroupBase<OptionType>, new()

查看this article并跳转到标题为 Generic Constraints 的部分。

关于c# - 使用 C# 泛型进行扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4136596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com