Могу ли я использовать строку str = "id", а затем person.str = 1? - PullRequest
1 голос
/ 25 декабря 2011

У меня есть звонок класса Лицо:

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 ]

2 голосов
/ 25 декабря 2011
  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);
                }

Это может сработать для вас. Убедитесь, что вы правильно указали имя свойства.

0 голосов
/ 25 декабря 2011

Вы можете использовать отражение для этого или dynamic в .NET 4.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...