在foreach循环中获取变量的名称

时间:2017-04-27 19:45:15

标签: c# reflection

我正在尝试从列表中获取变量的名称,该变量代表词典,以便我可以填写组合框。到目前为止,我已尝试使用 nameof 方法,但我无法获得名称。
在我的示例中,我想用{{填充组合框1}},param1param2

const变量在另一个类常量

param3

包含常量的字典

        public const string param1 = "a";
        public const string param2 = "b";
        public const string param3 = "c";
        public const string d = "d";
        public const string e = "e";
        public const string f = "f";

麻烦的 foreach

  public static Dictionary<string, List<string>> formIdDict = new Dictionary<string, List<string>>
            {
                {singleParamFo,new List<string> {param1,param2,param3 } },
                {PIDFo,new List<string> {d,e,f } }
            };

我应该在foreach中指定什么类型,因为我不能使用像

这样的东西
public SingleParamForm()
        {
            InitializeComponent();
            foreach (var t in Constants.formIdDict[Constants.singleParamFo])
                singleParamCombo.Items.Add(nameof(t));
        }

1 个答案:

答案 0 :(得分:0)

不是使用List<string>作为词典的TValue,而是使用名称和值创建一个类,或者使用名称为item1的List<Tuple<<string,string>>,将值作为item1。

public static IDictionary<string, List<Tuple<string,string>>> formIdDict =
    new Dictionary<string, List<Tuple<string, string>>>
    {
        {singleParamFo, new List<Tuple<string,string>>
            {
                 new Tuple<string,string>(nameof(param1), param1)                     //...
            }
    }



 foreach (var t2 in Constants.formIdDict[Constants.singleParamFo])
     singleParamCombo.Item.Add(t2.Item1);

然后将Tuple重构为具有有意义名称的类