Я пытаюсь использовать Generic Abstract Factory в C#Внедрение Generic Abstract Factory
Я следуя этому примеру: http://www.codeproject.com/Articles/21043/Generic-Abstract-Factory
У меня есть 2 вопроса.
Первое: Dependency Injection (я использую Unity)
public class ClientFactory
{
private readonly IFactory<Car> _carFactory;
public ClientFactory(IFactory<Car> carFactory)
{
_carFactory = carFactory;
}
}
И я называю это так:
var client = new ClientFactory(new Car()); //(this is what the IoC does)
Теперь, чтобы иметь возможность придать fakeCar
я это сделал:
public class CarFake : IFactory<Car>
{
public TProduct Build<TProduct>() where TProduct : IProduct<Car>, new()
{
Console.WriteLine("Creating FakeCar: " + typeof(TProduct));
return new TProduct();
}
}
Таким образом, его можно назвать:
var client = new ClientFactory(new CarFake()); Is this ok?
Второй вопрос:
Как передать параметры для конкретных продуктов (параметры конструктора), позволяет сказать Honda(long id, string model)
, я хотел бы сказать:
IProduct<Car> carProducta = _carFactory.Build< Honda(Id:1,Model:"Civic") >();
Спасибо большое заранее для вашей помощи.
Я не понимаю, почему вы переходите в «новый автомобиль()» на автомобильный завод, если только «Автомобиль» * не является фабрикой? –
Код в этой статье добавляет слишком много ненужного осложнения для чего-то довольно простого. Практически бессмысленно использовать этот шаблон вообще, если вы правильно используете свою инфраструктуру DI. – Jedediah
«Generic Abstract Factory» - звучит как контейнер «ninject» IOC. Зачем изобретать? –