SelectList类的参数化构造函数之一如下所示: -
public SelectList(IEnumerable items, string dataValueField, string dataTextField, object selectedValue);
我的问题是我想为dataValueField和dataTextField分配一些值,但是在实例化类而不是稍后阶段可能是在进行一些检查之后,然后动态决定要传递给哪些值。
我面临的问题是只有一种方法可以传递dataValueField和dataTextField的值,这是通过参数化构造函数。
有没有办法可以使用类的某些属性来分配dataValueField和dataTextField的值。
谢谢
答案 0 :(得分: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");