我有一个类
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字典添加值!我该怎么做?我搜索并尝试了,但没有成功。
由于字典类没有实现 IList
(这是我在前几天抱怨的问题),所以使用起来很麻烦。实际上这取决于你拥有哪些资源。对于int
/string
类型的 Add
方法,解决起来还是比较容易的。但是如果你需要处理常规列表反射,你将需要来自ICollection<KeyValuePair<int,string>>
的 Add
方法。
标准用法:
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 });
我猜你想访问私有成员"m_Dict"?
a x = new a();
Dictionary dic = (Dictionary) x.GetType()
.GetField("m_Dict",BindingFlags.NonPublic|BindingFlags.Instance)
.GetValue(x);
// do something with "dic"
但这是非常糟糕的设计