我想创建一个params集合。使用泛型创建集合非常简单:
List<Param> Params = new List<Param>();
我可以简单地添加这样的参数:
List<Param> Params = new List<Param>() {
new Param() { Label = "Param 1", Type = Param.ParamType.Text },
new Param() { Label = "Param 2", Type = Param.ParamType.Select }
}
现在,如何为每个参数添加一个类型值属性?
像:
我认为有更好的解决方案:
new Param() { Label = "Param 1", Type = Param.ParamType.Text, StringValue = "text" },
new Param() { Label = "Param 1", Type = Param.ParamType.Text, StringValue = "text" },
new Param() { Label = "Param 1", Type = Param.ParamType.CheckBox, BoolValue = true }
答案 0 :(得分:0)
我建议创建一个通用子类:
public Param<T> : Param
{
public T Value { get; set; }
}
然后像这样创建它们:
new Param<string>() { Label = "Param 1", Type = Param.ParamType.Text, Value = "text" },
new Param<string>() { Label = "Param 1", Type = Param.ParamType.Text, Value = "text" },
new Param<bool>() { Label = "Param 1", Type = Param.ParamType.CheckBox, Value = true }
您可以利用类型推断在Param
上创建更方便的静态方法:
public class Param
{
...
public static Param<T> From<T>(string label, ParamType type, T value)
{
return new Param<T>()
{
Label = label,
Type = type,
Value = value
}
}
}
然后像这样使用它:
Param.From("Param 1", Param.ParamType.Text, "text"),
Param.From("Param 1", Param.ParamType.Text, "text"),
Param.From("Param 1", Param.ParamType.CheckBox, true)