我有以下词典:
private Dictionary<string, double> averages = new Dictionary<string, double>();
现在我想使用反射添加两个额外的值。我可以检索字段信息,但我还需要做什么?
FieldInfo field = ProjectInformation.SourceManager.GetType().GetField("averages");
if (field != null)
{
//what should be here?
}
答案 0 :(得分:5)
MethodInfo mi = field.FieldType.GetMethodInfo("set_Item");
Object dict = field.GetValue(ProjectInformation.SourceManager);
mi.Invoke(dict, new object[] {"key", 0.0} );
答案 1 :(得分:4)
如果您需要获取单元测试的字段和值,请考虑使用Microsoft的PrivateObject
它在那里你可以在单元测试期间检查数据成员的内部状态,如果你需要,这似乎是你想要做的。
在您的单元测试中,您可以执行以下操作:
MyObject obj = new MyObject();
PrivateObject privateAccessor = new PrivateObject(obj);
Dictionary<string, double> dict = privateAccessor.GetFieldOrProperty("averages") as Dictionary<string, double>;
然后您可以自由地从字典中获取并设置所需的任何值。
答案 2 :(得分:0)
if(field != null)
{
field.GetValue(instance);
}