Я изучаю веревки Единства, и у меня проблемы с настройкой так, как я хочу.
Я установил MVCE, чтобы проиллюстрировать это:
A Customer
имеет имя.
public interface ICustomer
{
string name { get; set; }
}
public class Customer : ICustomer
{
public string name { get; set; }
public Customer(string name)
{
this.name = name;
}
}
Чтобы построить Customer
, была создана Фабрика:
public interface ICustomerFactory
{
ICustomer Create(string name);
}
public class CustomerFactory
:ICustomerFactory
{
public ICustomer Create(string name)
{
return new Customer(name);
}
}
Основная программа
static void Main(string[] args)
{
const string customerName = "foo";
var container = new UnityContainer();
container.RegisterType<ICustomerFactory, CustomerFactory>();
container.Resolve<ICustomer> //I would like this to return a customer named "foo".
}
Как бы я хотел, чтобы это работало:
- Когда Unity пытается разрешить
ICustomer
, он использует фабрику, связанную с ним, ICustomerFactory -> Вот где я борюсь.
ICustomerFactory
затем преобразуется в его конкретную реализацию, CustomerFactory
, и вызывается Create(customerName)
.
Без Unity это было бы что-то вроде:
ICustomerFactory factory = new CustomerFactory();
ICustomer customer = factory.Create(customerName);
Я просматривал документацию по Unity, но это очень трудно понять, и у меня проблемы с прогрессом.