簡體   English   中英

如何創建具有變量值的參數類

[英]How to create a parameter class with variant value

我想創建一個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 }
}

現在,如何為每個參數添加類型化的value屬性?

喜歡:

  • 文字字符串
  • 選擇的選項列表
  • 日期,布爾值…

我認為有這樣一個更好的解決方案:

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 }

我建議制作一個通用子類:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM