Добавление значений в словарь с помощью отражения - PullRequest
3 голосов
/ 01 июня 2010

У меня есть класс

class a
{  
    private Dictionary <int , string> m_Dict = new Dictionary<int , string>();
}

из какого-либо другого компонента / класса нужно добавить значения в словарь m_Dict, используя отражение! Как мне это сделать ? Я искал и пытался, но безуспешно.

Ответы [ 2 ]

4 голосов
/ 01 июня 2010

Словарь - это боль, так как он не реализует IList (что-то, о чем я стонал только вчера вечером). Это действительно сводится к тому, что у вас есть в наличии. Устранить метод Add для int / string достаточно просто, но если вы имеете дело с типичным отражением в списке, вам потребуется метод Add из ICollection<KeyValuePair<int,string>>.

Для стандартного использования:

object data = new Dictionary<int, string>();
object key = 123;
object value = "abc";
var add = data.GetType().GetMethod("Add", new[] {
          key.GetType(), value.GetType() });
add.Invoke(data, new object[] { key, value });
3 голосов
/ 01 июня 2010

Я полагаю, вы хотите получить доступ к приватному члену "m_Dict"?

a x = new a();

Dictionary dic = (Dictionary) x.GetType()
                  .GetField("m_Dict",BindingFlags.NonPublic|BindingFlags.Instance)
                  .GetValue(x);

// do something with "dic"

Но это ОЧЕНЬ плохой дизайн

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