簡體   English   中英

具有IDictionary的C#嵌套反射SetValue

[英]C# Nested Reflection SetValue with IDictionary

如何設置嵌套對象的值? 這是我的課程:

public class MyPage<MyData> { 
    public MyData Content {get;set;}
}

public class MyData { 
    public IDictionary<string, string> Text { get;set; }
}

我有一個表示為字符串的表達式,如下所示

var expressionString = "Content[\"Main\"]";

設定值

var value = "hello world!";

設定對象

var page = new MyPage<MyData>();

請注意,“內容”為空,“文本”為空。 我想創建while設置Text [“ Main”] =“ hello world!”;

謝謝。

您的代碼可以正常工作,您必須初始化所有內容才能正常工作。 要使用這些類,您需要執行以下操作:

MyPage<MyData> myPage = new MyPage<MyData>();
myPage.Content = new MyData();
myPage.Content.Text = new Dictionary<string, string>();
myPage.Content.Text["foo"] = "bar";
myPage.Content.Text["fizz"] = "buzz";

foreach (var item in myPage.Content.Text)
{
   Console.WriteLine(item.Key + item.Value);
}

您可能想要做的是更改您的班級以執行以下操作。 這樣,當您創建MyPage類時,所有對象都已初始化。 另外,由於您將MyPage限制為僅限於此,因此我認為無需添加到MyPage。

public class MyPage
{
    public MyPage()
    {
        Content = new MyData();
    }
    public MyData Content { get; set; }
}

public class MyData
{
    public MyData()
    {
        Text = new Dictionary<string, string>();
    }
    public IDictionary<string, string> Text { get; private set; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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