簡體   English   中英

如何使用c#中的反射向字典添加值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM