我有一个字典,其中包含我想要匹配的值对,并在我所拥有的类的实例中进行更新。
例如,我有;
name -> test
userid -> 1
在我的课程中我有
MyClass.Name
MyClass.UserId
我想设置MyClass.Name = test
等
目前我有以下方法;
public static GridFilters ParseGridFilters(Dictionary<string,string> data, MyClass myClass)
{
foreach (KeyValuePair<string, string> kvp in data)
{
Type t = typeof(MyClass);
t.GetProperty(kvp.Value, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
}
return myClass;
}
如何检查kvp.Key是否存在(无论我认为我是否已用BindingFlags覆盖),然后将kvp.Value设置为myClass。(kvp.Key)
答案 0 :(得分:1)
您必须使用反射保存对要检索的属性的引用,然后使用 SetValue 设置其值。
您的代码中也存在错误。 根据您的解释,该属性的名称似乎在键,而不是值
public static GridFilters ParseGridFilters(Dictionary<string,string> data, MyClass myClass)
{
foreach (KeyValuePair<string, string> kvp in data)
{
Type t = typeof(MyClass);
var prop = t.GetProperty(kvp.Key, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
prop.SetValue(myClass, kvp.Value, null);
}
return myClass;
}