Я хочу создать расширяемую вложенную структуру, и кажется, что я должен сделать это с помощью дженериков, хотя я не могу использовать их «правильно».Расширение использования C# generics?
Я хочу, чтобы иметь возможность создавать дочерние классы из 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;
}
}
Удивительный, спасибо! –