Ich bin neu bei IOC-Containern und fange gerade mit NInject an.
Was tun Sie, wenn Ihr Konstruktor Parameter haben soll, die keine Dienste sind und nicht vom IOC-Container instanziiert werden müssen?
Zum Beispiel:
public class Person
{
private readonly string _name;
private readonly IPersonRepository _repository;
public Person(string name, IPersonRepository repository)
{
_name = name;
_repository = repository;
}
......
}
Stellen Sie sich das vor Name ist eine Anforderung der Klasse Person. Um also sicherzustellen, dass eine Person immer einen Namen hat, muss dieser an den Konstruktor übergeben werden.
Wie würden wir eine Instanz von Person mit NInject erhalten? Der Name muss von dem Teil der Anwendung übergeben werden, der eine neue Person erstellt, während der IOC-Container das IPersonRepository übergeben muss.
Ich verstehe, dass entweder der Name oder das Repository stattdessen mit einer Eigenschaft injiziert werden könnte, aber das wäre keine saubere Lösung - wir verlieren etwas von der semantischen Kraft der Programmiersprache.