2009-11-18 86 views
0

我公司目前有以下注冊成立城堡溫莎自動註冊

private static void AddFrameworkComponentsTo(IWindsorContainer container) 
{ 
    container.AddComponent<ITypeConverter, TypeConversionFacade>(); 
    container.AddComponent<Framework.Conversion.ITypeConverter<string, int>, StringConverter>(); 
    container.AddComponent<Framework.Conversion.ITypeConverter<string, decimal>, StringConverter>(); 
    container.AddComponent<Framework.Conversion.ITypeConverter<string, DateTime>, StringConverter>(); 
} 

什麼,以避免註冊的每個接口相同的組件最簡單的方法?正如你所看到的,我的「StringConverter」類實現了幾個不同的接口,並且這個列表可能會增長。

編輯 我剛剛意識到,上面甚至沒有工作,因爲抱怨的關鍵,所以不得不將其更改爲以下:

container.AddComponent<Framework.Conversion.ITypeConverter<string, int>, StringConverter>("ITypeConverter<string, int>"); 
container.AddComponent<Framework.Conversion.ITypeConverter<string, decimal>, StringConverter>("ITypeConverter<string, decimal>"); 
container.AddComponent<Framework.Conversion.ITypeConverter<string, DateTime>, StringConverter>("ITypeConverter<string, DateTime>"); 

什麼是處理這個最好的方法是什麼?

+0

上面的代碼應該工作得很好,你看到什麼異常關鍵?你在用什麼版本的Windsor? – 2009-11-18 16:22:56

+0

「有一個組件已經註冊給定的關鍵MyCompany.Framework.Conversion.StringConverter」 – 2009-11-18 17:32:25

+0

啊,對..... – 2009-11-18 18:37:01

回答

3

如何:

container.Register(Component.For(typeof(StringConverter).GetInterfaces()) 
          .ImplementedBy(typeof(StringConverter))); 

關於流利註冊的詳細信息,請參閱fluent API wiki

+0

感謝mausch工作...希望我能聽到周圍的註冊語法,問題是我不夠用。 – 2009-11-18 17:30:46