-1

SelectList 类的参数化构造函数之一如下所示:-

public SelectList(IEnumerable items, string dataValueField, string dataTextField, object selectedValue);

我的问题是我想为 dataValueField 和 dataTextField 分配一些值,但不是在实例化类时而是在稍后阶段可能会在进行一些检查然后动态决定要传递的值。

我面临的问题是只有一种方法可以传递 dataValueField 和 dataTextField 的值,那就是通过参数化构造函数。

有没有办法可以使用类的某些属性来分配 dataValueField 和 dataTextField 的值。

谢谢

4

1 回答 1

1

dataValueField和是的dataTextField私有成员MultiSelectList,它是 的基类SelectList,因此您可以使用反射设置这些字段。例如:

  var selectList = new SelectList(new Dictionary<int, int> { { 1, 2 }, { 3, 4} });

  var privateFields = selectList.GetType().BaseType.GetFields(BindingFlags.Instance | BindingFlags.NonPublic);

  privateFields.Single(i => i.Name.Contains("DataTextField"))
               .SetValue(selectList, "value");

  privateFields.Single(i => i.Name.Contains("DataValueField"))
               .SetValue(selectList, "key");
于 2013-03-20T19:40:06.770 回答