У меня есть проблема .... Чтобы не сказать, у меня есть класс, как этот:StructureMap типа решительность с параметрами
public class A: InterfaceA
{
private FileInfo _fileInfo = null;
public A(FileInfo fileInfo)
{
this._fileInfo = fileInfo;
}
...
}
и еще один:
public class B: InterfaceB
{
private A _classA = null;
public B(A classA)
{
this._classA = classA;
}
public void Do()
{
FileInfo fi = new FileInfo(...);
_classA.DoSomething();
}
}
Теперь у меня есть настройки StructureMap регистрируется следующим образом:
For<InterfaceA>().Use<A>();
For<InterfaceB>().Use<B>();
и когда я выполняю структуру структуры B.Do(), выдается ошибка, потому что нет записи реестра для параметра FileInfo. Параметр класса A (FileInfo) построен в классе B; Я знаю, что могу сделать: ObjectFactor.GetInstance() и передать параметры, но я хочу, чтобы Инъекция инъекции не была поставщиком услуг. И я хочу, чтобы, когда я делаю ObjectFactory.GetInstance(), для построения всего графа объектов.
Как это сделать?
Да, но где поставить: Для. Использование () .Ctor () .Is (myFile); Я не могу поместить его в свои регистры, потому что FileInfo не известна при создании экземпляра? –
Luka
В случае, если имя файла неизвестно до выполнения метода Do, вам нужно либо пойти на заводский подход, либо рассмотреть возможность передачи файла методу. – PHeiberg
Отредактировал мой ответ, чтобы включить фабричный подход. – PHeiberg