Я работаю с autofac. Пока я разрешаю все свои зависимости с инсталляцией конструктора.поведение при введении на созданные вручную объекты
Существует случай, когда я застревают:
Учитывая данный класс клиентов:
public class Customer : ICustomer
{
public string Name { get; set; }
private int ExternId { get; set; }
public IExternalIdProvider externalIdProvider { get; set; }
public Customer()
{
this.externalIdProvider = new ConcreteIdProvider(this);
}
public BevorSave()
{
this.ExternId = externalIdProvider.GetNextId();
}
}
Для того, чтобы создать новый объект клиента, основанный на запросе или графического интерфейса действий. Я использую новый оператор. Однако - есть IdProvider в CustomerClass, который я хочу ввести. (как свойство).
Если Клиент будет решен в IoC контейнер я хотел бы использовать следующую конфигурацию:
builder.RegisterType<ConcreteIdProvider>().As<IExternalIdProvider>();
builder.RegisterType<Customer>().As<ICustomer>()
.OnActivated(ae =>
{
IExternalIdProvider idProvider =
ae.Context.Resolve<IExternalIdProvider>(TypedParameter.From(ae.Instance));
ae.Instance.externalIdProvider = idProvider;
});
Мой вопрос: Как я могу привнести поведение ExternalIdProvider в клиенте? (С использованием autofac)
В данной статье показан пример, как это будет сделано с локатором: http://blogs.msdn.com/b/simonince/archive/2008/06/30/dependency-injection-is-dead.aspx
Спасибо за вашу помощь.
Возможно, вам потребуется уточнить, что вы пытаетесь сделать с помощью [нефункционального] фрагмента кода. Если вы хотите, чтобы у вас были введенные свойства, вы можете использовать функцию Autofac PropertiesAutowired при регистрации клиента ... но я предполагаю, что это не то, что вам нужно. В примере, на котором вы ссылались, показано использование PostSharp для аспект-ориентированного программирования. Это ключ к этому примеру, а не структура разрешения зависимостей. –