我可以使用string str =“id”然后person.str = 1吗?

时间:2011-12-25 12:26:05

标签: oop c#-4.0

我有一个班级人员:

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];
}

2 个答案:

答案 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类型。