Мне нужно, чтобы мой одноэлементный сервис зависел от объекта веб-запроса, и я хотел бы использовать Castle TypedFactoryFacility для автоматического создания фабрики для моих объектов.
Моя регистрация выглядит так:
kernel.AddFacility<TypedFactoryFacility>();
kernel.Register(
Component.For<IMailMessageQueueProvider>()
.AsFactory()
);
kernel.Register(
Component.For<IMailMessageQueue>()
.ImplementedBy<MailMessageQueue>()
.LifeStyle.PerWebRequest
);
Я также зарегистрировал время жизни веб-запроса в web.xml, интерфейс фабрики выглядит так:
public interface IMailMessageQueueProvider
{
IMailMessageQueue Get();
}
И я получаю эту приятную ошибку:
Type Model.IMailMessageQueueProvider is abstract.
As such, it is not possible to instansiate it as implementation of service
Model.IMailMessageQueueProvider.
Почему Castleне создаете фабрики?
это ссылка, которой я следовал: http://stw.castleproject.org/Windsor.Typed-Factory-Facility-interface-based-factories.ashx