[英]How to add a value to a dictionary using reflection in c#?
我有以下詞典:
private Dictionary<string, double> averages = new Dictionary<string, double>();
現在我想使用反射添加兩個額外的值。 我可以檢索字段信息,但我還需要做什么?
FieldInfo field = ProjectInformation.SourceManager.GetType().GetField("averages");
if (field != null)
{
//what should be here?
}
MethodInfo mi = field.FieldType.GetMethodInfo("set_Item");
Object dict = field.GetValue(ProjectInformation.SourceManager);
mi.Invoke(dict, new object[] {"key", 0.0} );
如果您需要獲取單元測試的字段和值,請考慮使用Microsoft的PrivateObject
它在那里你可以在單元測試期間檢查數據成員的內部狀態,如果你需要,這似乎是你想要做的。
在您的單元測試中,您可以執行以下操作:
MyObject obj = new MyObject();
PrivateObject privateAccessor = new PrivateObject(obj);
Dictionary<string, double> dict = privateAccessor.GetFieldOrProperty("averages") as Dictionary<string, double>;
然后,您可以從Dictionary中自由獲取和設置所需的任何值。
if(field != null)
{
field.GetValue(instance);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.