2013-04-09 68 views
0

如何設置嵌套對象的值?這裏是我的類:C#使用IDictionary嵌套反射SetValue

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>(); 

請注意,內容我s null和Text是null。我想創建Text設置[[Main]] =「hello world!」;

謝謝。

+1

請顯示您當前的代碼,並告訴我們什麼不適用於它。 – 2013-04-09 12:59:13

回答

0

您的代碼可以工作,您必須初始化所有內容才能使其工作。要使用這些類,你需要做到以下幾點:

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的必要性,因爲您無論如何都限制它。

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; } 
}