Jan*_*sek 12 c# string variables properties
有没有办法做到这一点?我尝试测试对象的属性是否存在,如果存在,我想为它设置一个值.(也许完整的想法很糟糕,如果是真的 - 为什么?)
class Info
{
public string X1{ set; get; }
public string X2{ set; get; }
public string X3{ set; get; }
}
Dictionary<string, string> values = new Dictionary<string, string>();
values.Add("X1","blah1");
values.Add("X2","blah2");
values.Add("NotThere","blah3");
Info info = new Info();
foreach (var item in values)
{
string propertyName = item.Key;
string value = item.Value;
if (info.GetType().GetProperty(propertyName) != null) //this probably works
{
info.propertyName = value; //this doesn't, how to set it?
}
}
Run Code Online (Sandbox Code Playgroud)
Jam*_*mes 29
是的,您正在寻找PropertyInfo.SetValue方法,例如
var propInfo = info.GetType().GetProperty(propertyName);
if (propInfo != null)
{
propInfo.SetValue(info, value, null);
}
Run Code Online (Sandbox Code Playgroud)
var propertyInfo = info.GetType().GetProperty(propertyName);
if (propertyInfo != null) //this probably works. Yes it is
{
propertyInfo.SetValue(info, value, null);
}
Run Code Online (Sandbox Code Playgroud)
您需要调用SetValue属性上的方法:
var property = info.GetType().GetProperty(propertyName);
if (property != null)
{
property.SetValue(info, value, null);
}
Run Code Online (Sandbox Code Playgroud)