2012-01-12 5 views
1

オブジェクトを作成するためにリゾルバにどのようにパラメータを渡しますか?サービスの解像度/場所とパラメータ

私は特定の順序で作成されたデータサービスオブジェクトは、例えば1つのUOWオブジェクト

を使用して作成されていることを確認できるようにしたい、私はデータサービスオブジェクトに渡すUOWオブジェクトを持っています

using (var context = Resolver.GetService<IUoW>()) 
{ 
    var dataService1 = Resolver.GetService<IDataService1>(); 
    var dataService2 = Resolver.GetService<IDataService2>(); 

    // do some stuff 

    context.Commit(); 
} 

オプション1は、Resolver.GetServiceコール にIUoWを渡す -

オプション2のためIDataServiceXにプロパティを追加IDataServiceX実装のコンストラクタの知識がありませんIUoW - これは簡単に設定できません。どのようにしてこのプロパティを設定する必要があるのか​​プログラマには分かりますか?

+0

オプション2の質問に具体的に答えるには、IDataServiceNの実装でプロパティが設定されているかどうかをチェックし、開発者に優しい例外を投げる方法があります。しかし、いいですね。 – harriyott

+0

ええ、私は本当に設定された解決策やコンパイル時の例外が欲しい –

答えて

1

これまでEntity FrameworkよりUnit Unit of Work(UoW)とRepositoryパターンを実装しています。

実際、UoWはEFコンテキストを抽象化し、リポジトリはエンティティセットを抽象化しました。

リポジトリの実装では、UoWのプロパティがありました。つまり、リポジトリのライフサイクルを管理するIoCコンテナではなく、つまりUoWの責任でした。

あなたの状況では、リポジトリの名前はサービスですが、同じことが言えることもあります。 IUoWインターフェイスは、特定の作業単位内に存在するすべてのサービスに対して2つ(またはそれ以上)のプロパティを持つことができますか?

関連する問題