Похоже, ответ «Нет».
Я пытался использовать AggregateService , который должен делать то, что вы хотите, но он вылетает во время разрешения фабрики с сообщением «Тип« Castle.Proxies.IComponentFactoryProxy »из сборки« DynamicProxyGenAssembly2, Version = 0.0.0.0, Culture = нейтральный, PublicKeyToken = null "попытался реализовать недоступный интерфейс. ' (Исходное сообщение на русском языке, я его перевел).
Я не могу найти другой подход, который бы работал без ручной (но довольно простой) реализации. Может, тебе стоит написать Николасу Блюмхардту.
На самом деле, мне лучше сделать это так:
public class Bus {
readonly ILifetimeScope _OwnScope;
// Autofac always provides ILifetimeScope that owns a component as a service to the component
// so it can be used as a dependency
public Bus(ILifetimeScope ownScope) {
_OwnScope = ownScope;
}
void Send<T>(T message) {
_OwnScope.Resolve<IHandler<T>>.Handle(message);
}
}
Вы, вероятно, будете утверждать, что соединение с ILifetimeScope
- плохая идея. Ну, это довольно простой интерфейс, который может быть включен в вашу собственную реализацию. Или вы можете выделить код в простой фабричный класс. Ну, похоже, ты знаешь, как это сделать без моих предложений.