2012-05-12 12 views
4

カスタムAbstractLifestyleManager派生型にいくつかの引数を渡す必要があります。CastleウィンザーでCreationContext.AdditionalArgumentsを運ぶ

Iが容器からタイプのインスタンスを要求すると、私は、次のオーバーロードを使用します。例えば

T Resolve<T>(string key, object argumentsAsAnonymousType) 

:カスタムAbstractLifestyleManager派生型の内部、そして

public IHttpController CreateController(HttpControllerContext controllerContext, string controllerName) 
{ 
    var controller = this.container.Resolve<IHttpController>(
     controllerName, 
     new { requestProperties = controllerContext.Request.Properties }); 

    // ... 
} 

を、私ができこれを行う:

var messageProperties = (IDictionary<string, object>) 
      context.AdditionalArguments["requestProperties"]; 

これは私が前もって渡した値を返します。

しかし、base.Resolve(context, releasePolicy)を呼び出すと、コードがカスタムタイプに再帰的に入ると、AdditionalArgumentsはnullになります。

base.Resolveコールの間でAdditionalArgumentsを受け渡しすることはできますか?

答えて

1

ライフスタイルマネージャを実装するときの流れはわかりませんが、CreateContext AdditionalArgumentsがデフォルトの子コンテキストに伝播されないという問題のように聞こえます。 this other questionを参照してください。

この場合、DefaultDependencyResolverをサブクラス化することによって、リンクされた質問に記載されているようにデフォルトを変更することができます。

関連する問題