Почему вы использовали функцию автоматического запуска Castle Windsor factory: AsFactory(), а не запрашивать необходимый интерфейс?
Пример:
container.Register(Component.For<IEmailSender>().ImplementedBy<SmtpEmailSender>());
container.Register(Component.For<IEmailSenderFactory>().AsFactory().LifeStyle.Transient);
...
using (var factory = context.GetServiceFactory<IEmailSenderFactory>())
{
var emailSender = factory.CreateEmailSender();
emailSender.Send(message);
}
Почему бы вам просто не написать:
var emailSender = context.GetServiceFactory<IEmailSender>();
emailSender.Send(message);
Эффект тот же. Windsor разрешит IEmailSender как стандартную зарегистрированную реализацию, так что в чем смысл?