使用反射向字典添加值

siv*_*iva 3 c# reflection

我有一堂课

class a
{  
    private Dictionary <int , string> m_Dict = new Dictionary<int , string>();
}
Run Code Online (Sandbox Code Playgroud)

来自其他一些组件/类需要使用反射将值添加到 m_Dict 字典!我该怎么做 ?我搜索并尝试过,但没有成功。

Mar*_*ell 5

字典很痛苦,因为它没有实现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 });
Run Code Online (Sandbox Code Playgroud)