2

次のシナリオでautofacを使用しようとしています。
すべてのメソッド呼び出しで、DB接続を開くために使用する接続の詳細を受信するWCFサービス。
(すなわちpublic UserDTO GetUser(string dbUsername, string dbPassword, int userId)

DB接続を開くことはすべてのメソッドに共通であるため、を使用しIParameterInspectorてすべてのメソッド呼び出しをインターセプトし、接続の詳細を抽出して、接続を初期化します。

私の問題は次のとおりです。1
。必要なファクトリを自分に注入できるかどうか(およびその方法)がわかりません。2。IParameterInspector
接続を作成した後、コンテナに登録する方法がわかりません。そのリクエストのすべてのコンポーネントで利用できるようになります。

私のIParameterInspectorこれまでのところ:

        public object BeforeCall(string operationName, object[] inputs)
        {

            var userName = inputs[0] as Guid?;
            var password = inputs[1] as string;

            // How do I inject the ConnectionsFactory?
            var connection = ConnectionsFactory.CreateConnection(userName, password); 
           // How can I register my connection in the container, so that it'll be available to all dependencies created in this call?
            return null;
        }

ありがとう

4

1 に答える 1

0

わかりました、それを理解しました-
私の問題は、私のサービスクラスがインスタンス化された後IParameterInspectorに呼び出されたことでした。したがって、明らかにそれは初期化を行う場所ではありませんでした。

実装は、サービスクラスの作成に呼び出され、実際にWCFにサービスクラスの作成方法を指示するために使用されるため IInstanceCreator、正しいことであることが証明されています。

autofac Lifetime Scopeを作成し、DB接続を登録しました。

于 2012-08-25T11:43:38.073 に答える