2017-04-26 6 views
1

Autofacコンフィグレーションを使用してServiceオブジェクトを作成しようとしています。KeyFilter属性を持つコンストラクタのAutofacコンフィグレーション

public class Service : IService 
{ 
     public Service([KeyFilter("eod")]ISimpleMongoClient eodClient, 
      [KeyFilter("live")]ISimpleMongoClient liveClient 
      ) : base(config) 
     { 
      _eodClient = eodClient; 
      _liveClient = liveClient; 
     } 
} 

public class SimpleMongoClient : ISimpleMongoClient 
{ 
    public SimpleMongoClient(string connectionString, string database) 
    { 
     IMongoClient client = new MongoClient(connectionString); 
     MongoDatabase = client.GetDatabase(database); 
    } 
} 

何らかの形で次の設定を行うと、ISimpleMongoClientパラメータを正しく解決できません。ほかに何が足りないのですか?

{ 
    "components": [ 
    { 
     "type": "Service, TestProject", 
     "services": [ 
     { 
      "type": "IService, TestProject" 
     } 
     ], 
     "instanceScope": "single-instance" 
    }, 
    { 
     "type": "SimpleMongoClient, TestProject", 
     "services": [ 
     { 
      "type": "ISimpleMongoClient, TestProject", 
      "key": "eod" 
     } 
     ], 
     "parameters": { 
     "connectionString": "mongodb://localhost:27017/?readPreference=primary", 
     "database": "eod" 
     }, 
     "instanceScope": "single-instance" 
    }, 
    { 
     "type": "SimpleMongoClient, TestProject", 
     "services": [ 
     { 
      "type": "ISimpleMongoClient, TestProject", 
      "key": "live" 
     } 
     ], 
     "parameters": { 
     "connectionString": "mongodb://localhost:27017/?readPreference=primary", 
     "database": "live" 
     }, 
     "instanceScope": "single-instance" 
    } 
    ] 
} 

答えて

4

あなたはフィルタリングwith the WithAttributeFiltering()拡張を行う事を登録する必要がありKeyFilter属性を使用します。あなたは設定でそれをすることはできません。

+0

説明をありがとう。あなたは構成を介して実行可能にする価値があると思いますか?機能要求としてこれを提起しますか? –

+0

いいえ、コンフィギュレーションは、プログラム設定とのフィーチャフィーチャマッチではありません。あなたがそれを行う必要がある場合は、特別なプログラムビットを持つAutofacモジュールを作成し、モジュールを構成することをお勧めします。例については、ドキュメントを参照してください。 –

関連する問題