增加值的詞典我有一個類使用反射
class a
{
private Dictionary <int , string> m_Dict = new Dictionary<int , string>();
}
從其他組件/類
需要使用反射值添加到字典m_Dict!我該怎麼做 ?我搜索並嘗試,但沒有成功。
增加值的詞典我有一個類使用反射
class a
{
private Dictionary <int , string> m_Dict = new Dictionary<int , string>();
}
從其他組件/類
需要使用反射值添加到字典m_Dict!我該怎麼做 ?我搜索並嘗試,但沒有成功。
我假設你要訪問的私有成員 「m_Dict」?
a x = new a();
Dictionary dic = (Dictionary) x.GetType()
.GetField("m_Dict",BindingFlags.NonPublic|BindingFlags.Instance)
.GetValue(x);
// do something with "dic"
但是,這是非常糟糕的設計
同意但嘗試圍繞EWS託管API進行一些單元測試而不這樣做。 – jolySoft 2014-10-09 09:34:16
詞典是一個痛苦,因爲它不實施IList
(我只是在另一個晚上呻吟)。這真的取決於你有什麼可用。對於int
/string
解決Add
方法很簡單,但如果您要處理典型的列表反射,則需要使用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 });
反思?給一個男人一把錘子,一切看起來像一個釘子!... – 2010-06-01 08:26:31