Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何创建具有变量值的参数类_C#_.net_Generics_Properties - Fatal编程技术网

C# 如何创建具有变量值的参数类

C# 如何创建具有变量值的参数类,c#,.net,generics,properties,C#,.net,Generics,Properties,我想创建一个params集合。使用泛型创建集合非常简单: List<Param> Params = new List<Param>(); 我建议创建一个泛型子类: public Param<T> : Param { public T Value { get; set; } } 然后像这样使用它: List<Param> Params = new List<Param>() { new Param() { Label

我想创建一个params集合。使用泛型创建集合非常简单:

List<Param> Params = new List<Param>();

我建议创建一个泛型子类:

public Param<T> : Param
{
    public T Value { get; set; }
}
然后像这样使用它:

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<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.From("Param 1", Param.ParamType.Text, "text"),
Param.From("Param 1", Param.ParamType.Text, "text"),
Param.From("Param 1", Param.ParamType.CheckBox, true)

但这样你就不能创建一个List@Alberto当然可以。Param是非泛型基类型。新列表{new Param…}将正常工作,因为Param是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)