2

私はインターフェースを持っています:

interface IDataHoldingSession<out T>

私は次のことをしたい:

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

ただし、これは次の例外で失敗します。

System.ArgumentException: 指定された型IDataHoldingSession<DbContext>は実装されていませんIDataHoldingSession<Object>

これを修正する最も適切な方法は何ですか?

4

1 に答える 1

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

アップデート

Simple Injector v2.4がリリースされました。このリリースでは、このバグが修正されています。

于 2013-10-29T07:54:43.437 に答える