私のインターフェースパッケージには、ユーザーがアーティストに関する情報を変更したいときに実行される次のコードがあります。
IArtist artistToChange = ContainerHelper.Container.GetExportedValue<IArtist>();
artistToChange.Load(new Guid("provided guid"));
artistToChange.SomeProperty = newValue;
artistToChange.Update();
私のドメインのエンティティであるアーティストは、ロードする必要があるIUser CreatedBy
&IUser LastAlteredBy
プロパティによって他のものと一緒に構成されます (多対 1 の関係を考えてください)。各エンティティには、独自のリポジトリもあります。IArtist には、 IUser と同じように IArtistRepository がありIUserRepository
ます。
私の問題は次のとおりです。IoCを維持しながら(の具体的な実装について知らないという具体的な実装なしで)内部の具体的な実装のインスタンスを取得するにはどうすればよいですか?IUser
IArtist.Load()
IArtist
IUser
(簡単にするためにCArtist
、 の具体的な実装IArtist
とCUser
の実装を呼び出しましょうIUser
。)
それを念頭に置いて、コンテナをエンティティに渡してパーツをリクエストできるようにすることを考えましたが、主にコンストラクターインジェクションと「CArtist」のコンストラクターを使用しているため、それが良い考えなのかアンチパターンなのかはわかりません次のようになります。
[ImportingConstructor]
public CArtist(IArtistRepository repository)
{
this.repository = repository;
}
しかし、コンテナに次のようなものを自分自身に注入させることはできません
[ImportingConstructor]
public CArtist(IArtistRepository repository, CompositionContainer container)
{
this.container = container
this.repository = repository;
}
つまり、これは基本的にそれです...私はここでかなり迷っています...これは、それ自体の質問というよりも、助け/指導を求める叫びであることが判明しました...
PS: その他の情報が必要な場合は、お問い合わせください。