2013-10-24 57 views
1

我的xml配置文件中有一個組件,它帶有一組菜單項。這工作正常,每個菜單項都適當填充其值。Castle Windsor - 作爲xml組件的參數的複雜類型列表

它的值之一chart是一個複雜類型,它本身包含兩個字符串和一個複雜類型列表。圖表中的列表未正確填充,並且始終包含一個屬性都被設置爲默認值的元素。

這裏是我的xml文件的參數部分:

<menuItems> 
     <array> 
      <item> 
      <id>1</id> 
      <chart> 
       <title>Chart Title</title> 
       <series> 
        <list> 
        <item> 
         <id>1</id> 
         <name>Series Title</name> 
        </item> 
        </list> 
       </series> 
      </chart> 
      </item> 
    </array> 
</menuItems> 

和我相關類別:

[Convertible] 
public class QueryMenuItem 
{ 
    public int Id { get; set; } 
    public Chart Chart { get; set; } 
} 

[Convertible] 
public class Chart 
{ 
    public string Title{ get; set; } 
    public IList<ChartSeries> Series { get; set; } 
} 

[Convertible] 
public class ChartSeries 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

我怎樣才能得到溫莎城堡正確填寫一系列的名單?

回答

0

對於還在尋找解決方案鄉親...我已經去節點系列和它的(檢查3.2.0.0)工作:

<menuItems> 
    <array> 
    <item> 
     <id>1</id> 
     <chart> 
     <title>Chart Title</title> 
     <Series> 
      <item> 
      <id>1</id> 
      <name>Series Title</name> 
      </item> 
      <item> 
      <id>2</id> 
      <name>Series Title2</name> 
      </item> 
     </Series> 
     </chart> 
    </item> 
    </array> 
</menuItems> 

技術說明:看來,當它解析<系列>它已經知道它是通用列表,所以稱爲GenericListConverter.PerformConversion與<系列>作爲配置節點。 PerformConversion正在調用ListHelper < T> .ConvertConfigurationToCollection並傳遞樹中子節點的列表。

因此,當我們將項目包裝到<列表>中時,它被作爲具有單個項目「list」的集合處理(並且沒有直接的具有id和name值的子節點,所以使用默認值)。

在情況下,如果我們忽略<列表>節點,比ListHelper <牛逼> .ConvertConfigurationToCollection收到2個節點 - 即正確解析「項目」。

Sources of castle

並鏈接到GenericListConverter.cs

相關問題