我有一个班级人员:
public class Person
{
public int id{get;set;}
public string name{get;set;}
//and many others
}
有没有办法将值设置为不是常规方式的属性,如:person.id=1
但是使用类似string str="id"
和person.str=1
的内容?
我想要那个,因为我有很多属性,并且我收到了属性名称及其值的列表。所以我想避免长switch-case
并使用:
foreach(var item in MyList.Keys)
{
person.item=MyList[item];
}
答案 0 :(得分:2)
public class Person
{
public int Id{get;set;}
public string Name{get;set;}
//and many others
}
Dictionary<string,object> properties = new Dictionary<string,object>();
properties.Add("Id",1);
properties.Add("Name", "TestName");
Person p = new Person();
foreach (KeyValuePair<string, object> obj in properties)
{
p.GetType().GetProperty(obj.Key).SetValue(p, obj.Value, null);
}
这可能对你有用。确保你有适当的属性名称。
答案 1 :(得分:0)
您可以使用reflection或.NET 4.0中的dynamic
类型。