2013-10-28 38 views
2

我有一個接口:RegisterAll NOT VARIANT

interface IDataHoldingSession<out T> 

我要做到以下幾點:

container.RegisterAll<IDataHoldingSession<object>>(
    typeof(IDataHoldingSession<DbContext>), 
    typeof(IDataHoldingSession<PrincipalContext>)); 

然而,這種失敗,出現以下異常:

System.ArgumentException :提供的類型IDataHoldingSession<DbContext>未執行IDataHoldingSession<Object>

什麼是解決這個問題的最合適的方法?

回答

1

您正在使用的行爲可以被視爲當前Simple Injector 2.3版本中的一個錯誤。我們正在努力推出2.4版本,我將確保我們爲即將到來的2.4版本解決這個問題。框架中有更多地方不檢查變量類型。

在此期間,您可以使用以下解決方法:

container.RegisterAll(typeof(IDataHoldingSession<object>), 
    Lifestyle.Transient.CreateRegistration<IDataHoldingSession<object>>(
     () => container.GetInstance<IDataHoldingSession<string>>(), container), 
    Lifestyle.Transient.CreateRegistration<IDataHoldingSession<object>>(
     () => container.GetInstance<IDataHoldingSession<IPlugin>>(), container)); 

UPDATE

Simple Injector v2.4已被釋放。這個版本修復了這個錯誤。