2017-03-31 122 views
0

我想創建一個字典並將其填充到Unity的配置文件中,如圖所示here。然而,這個例子似乎是從舊版本的Unity IoC的,但我想知道如何使用Unity 4使用Unity應用程序塊創建字典IoC

<type ... to="MyTypeServer"> 
    <typeConfig> 
     <property Name="Converters" KeyType"string" ValueType="IConverter"> 
      <entry> 
      <key>csv</key> 
      <value><dependency name="csvConverter"/></value> 
      </entry> 

      <entry> 
      <key>xml</key> 
      <value><dependency name="xmlConverter"/></value> 
      </entry> 
     </property> 
    </typeConfig> 
</type> 


<type name="csvConverter" from="IConverter" to="MyCsvConverter"> 
</type> 

<type name="xmlConverter" from="IConverter" to="MyXmlConverter"> 
</type> 

做到這一點,這裏是類:

public class MyTypeServer 
{ 
     public IDictionary<string, IConverter> Converters 
     { 
      set; 
      private get; 
     } 

     public void DoConversion(string fileName) 
     { 
      string fileType = Path.GetFileExtension(fileName); 
      IConverter converter = Converters[fileType]; 

      if (converter != null) 
       converter.DoConversion(fileName); 
      .. 
      ... 
     } 

} 

我有一直在努力幾個小時,研究,但沒有運氣。

回答

0

從CodePlex網站鏈接你貼:

這是我們可以有字典的東西類型的快速僞代碼。

對我來說,這裏寫着「如果我們實現了這個功能,我們可以做這樣的事情」。與我的統一經驗相一致,我從來沒有遇到過這樣的事情。

可以但是:註冊所有的轉換器,把它們全部注入爲數組,然後自己創建字典。

// register in code or in xml... 
container.RegisterType<IConverter, XmlConverter>("xml-Converter"); 
container.RegisterType<IConverter, JsonConverter>("json-Converter"); 

internal class ConverterConsumer 
{ 
    public ConverterConsumer(IConverter[] converters) 
    { 
     _converters = converters.ToDictionary(x => x.FileType, x => x); 
    } 

    #region private 
    private Dictionary<string, IConverter> _converters; 
    #endregion 
} 

public interface IConverter 
{ 
    string FileType { get; } 
    void DoConversion(string fileName); 
} 
+0

我需要在配置文件中使用代碼,我可以想出很多方法來做到這一點。我見過其他一些例子,所以這是可行的。 – CodingYoshi

+0

做什麼代碼 - 註冊轉換器或建立字典? – Haukinger

+0

他們倆都是因爲字典會是一對kV的轉換器。在我們的解決方案中,一切都在配置文件中完成,我們無法重新編譯插入不同的實現。它必須通過配置才能即插即用。 – CodingYoshi