Можно ли в контейнере Windsor IOC зарегистрировать тип, для которого у меня уже есть экземпляр, вместо того, чтобы контейнер создавал его?
Вопрос
Можете ли вы зарегистрировать существующий экземпляр типа в контейнере Windsor?
Ответы
Ответ 1 · рейтинг 13 · Chris Canal
В свойстве ядра контейнера есть метод AddComponentInstance.
Из модульных тестов:
[Test]
public void AddComponentInstance()
{
CustomerImpl customer = new CustomerImpl();
kernel.AddComponentInstance("key", typeof(ICustomer), customer);
Assert.IsTrue(kernel.HasComponent("key"));
CustomerImpl customer2 = kernel["key"] as CustomerImpl;
Assert.AreSame(customer, customer2);
customer2 = kernel[typeof(ICustomer)] as CustomerImpl;
Assert.AreSame(customer, customer2);
}
[Test]
public void AddComponentInstance_ByService()
{
CustomerImpl customer = new CustomerImpl();
kernel.AddComponentInstance <ICustomer>(customer);
Assert.AreSame(kernel[typeof(ICustomer)],customer);
}
[Test]
public void AddComponentInstance2()
{
CustomerImpl customer = new CustomerImpl();
kernel.AddComponentInstance("key", customer);
Assert.IsTrue(kernel.HasComponent("key"));
CustomerImpl customer2 = kernel["key"] as CustomerImpl;
Assert.AreSame(customer, customer2);
customer2 = kernel[typeof(CustomerImpl)] as CustomerImpl;
Assert.AreSame(customer, customer2);
}
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.
Похожие материалы
- Пакет не найден при установке с помощью dnu install. Работает с восстановлением дну
- Как реализовать непрерывную доставку с помощью DNX и ASP.NET 5
- Thread.MemoryBarrier () и другие возможности ограничения памяти в DNX Core 5.0
- Запуск приложения MVC как отдельного приложения
- Ошибка анализа кода: объявление типов в пространствах имен
- Формат даты vb.net из текстового поля › запрос MS SQL