Сообщение Re[2]: как ресолвить не передавая ссылки на контейнер ( DI ) от 19.05.2018 5:06
Изменено 19.05.2018 5:07 okon
Re[2]: как ресолвить не передавая ссылки на контейнер ( DI )
Здравствуйте, Doc, Вы писали:
Doc>Здравствуйте, okon, Вы писали:
O>>Как такие сценарии правильно строятся без передачи и хранения ссылок на контейнеры ?
Doc>Задача состоит в создании экземпляра класса так ведь? А подобную задачу решат шаблон Factory.
Doc>
Возможно, но пока не понятно как внутри будет выглядеть Factory.CreateSomething, ведь в ней придется либо создавать инстансы вручную, либо как-то ресолвить зависимости.
т.е. пока не ясно как избавиться от container, т.к. конструктор типа имплементирующего IMyClass может принимать массу аргументов которые хотелось бы брать из контейнера а не передавать явно.
Doc>Здравствуйте, okon, Вы писали:
O>>Как такие сценарии правильно строятся без передачи и хранения ссылок на контейнеры ?
Doc>Задача состоит в создании экземпляра класса так ведь? А подобную задачу решат шаблон Factory.
Doc>
Doc>public class A
Doc>{
Doc> private IMyFactory _myFactory;
Doc> public A (IMyFactory myFactory)
Doc> {
Doc> _myFactory = myFactory;
Doc> }
Doc> public IEnumerable<IMyClass> CalculateSomething()
Doc> {
Doc> return Enumerable.Range(1,100).Select( i => _myFactory.CreateSomething(i));
Doc> }
Doc>}
Doc>Возможно, но пока не понятно как внутри будет выглядеть Factory.CreateSomething, ведь в ней придется либо создавать инстансы вручную, либо как-то ресолвить зависимости.
public class MyFactory : IMyFactory
{
IContainer container;
public MyFactory(IContainer container)
{
this.container = container;
}
IMyClass CalculateSomething(int i)
{
return container.Resolve<IMyClass>(new TypedParameter(type(int), i);
}
}т.е. пока не ясно как избавиться от container, т.к. конструктор типа имплементирующего IMyClass может принимать массу аргументов которые хотелось бы брать из контейнера а не передавать явно.
Re[2]: как ресолвить не передавая ссылки на контейнер ( DI )
Здравствуйте, Doc, Вы писали:
Doc>Здравствуйте, okon, Вы писали:
O>>Как такие сценарии правильно строятся без передачи и хранения ссылок на контейнеры ?
Doc>Задача состоит в создании экземпляра класса так ведь? А подобную задачу решат шаблон Factory.
Doc>
Возможно, но пока не понятно как внутри будет выглядеть Factory.CreateSomething, ведь в ней придется либо создавать инстансы вручную, либо как-то ресолвить зависимости.
т.е. пока не ясно как избавиться от container, т.к. конструктор типа имплементирующего IMyClass может принимать массу аргументов которые хотелось бы брать из контейнера а не передавать явно.
Doc>Здравствуйте, okon, Вы писали:
O>>Как такие сценарии правильно строятся без передачи и хранения ссылок на контейнеры ?
Doc>Задача состоит в создании экземпляра класса так ведь? А подобную задачу решат шаблон Factory.
Doc>
Doc>public class A
Doc>{
Doc> private IMyFactory _myFactory;
Doc> public A (IMyFactory myFactory)
Doc> {
Doc> _myFactory = myFactory;
Doc> }
Doc> public IEnumerable<IMyClass> CalculateSomething()
Doc> {
Doc> return Enumerable.Range(1,100).Select( i => _myFactory.CreateSomething(i));
Doc> }
Doc>}
Doc>Возможно, но пока не понятно как внутри будет выглядеть Factory.CreateSomething, ведь в ней придется либо создавать инстансы вручную, либо как-то ресолвить зависимости.
public class MyFactory : IMyFactory
{
IContainer container;
public MyFactory(IContainer container)
{
this.container = container;
}
IMyClass CreateSomething(int i)
{
return container.Resolve<IMyClass>(new TypedParameter(type(int), i);
}
}т.е. пока не ясно как избавиться от container, т.к. конструктор типа имплементирующего IMyClass может принимать массу аргументов которые хотелось бы брать из контейнера а не передавать явно.