私はIOCコンテナーを初めて使用し、NInjectを使い始めています。
コンストラクターにサービスではなく、IOCコンテナーによってインスタンス化する必要のないパラメーターを持たせたい場合は、どうしますか?
例えば:
public class Person
{
private readonly string _name;
private readonly IPersonRepository _repository;
public Person(string name, IPersonRepository repository)
{
_name = name;
_repository = repository;
}
......
}
その名前がPersonクラスの要件であると想像してください。したがって、Personが常に名前を持つようにするには、その名前をコンストラクターに渡す必要があります。
NInjectを使用してPersonのインスタンスを取得するにはどうすればよいですか?名前は、アプリのどのビットが新しいPersonを作成するかによって渡される必要がありますが、IOCコンテナはIPersonRepositoryを渡す必要があります。
代わりにプロパティを使用して名前またはリポジトリのいずれかを挿入できることは理解していますが、これはクリーンなソリューションではありません。プログラミング言語のセマンティックパワーの一部が失われています。