正如您在此处所读到的,我和 Kijana 试图提出一个完整的解决方案,用于将 Simple Injector 与 NServiceBus 集成。然而,Kijana 描述的问题(附加到集合)已经解决了很长时间。但是,将容器与 NServiceBus 集成还有许多其他问题,因为 NServiceBus 实现了符合容器 反模式。
我不确定这是否可以帮助您朝着正确的方向前进,但是您可以让 Simple Injector 构建在其他地方创建的实例,这允许将其IBus
注入属性,如可以在此处和此处阅读的那样。简而言之,您可以像这样配置 Simple Injector 进行属性注入:
class PropertySelectionBehavior<TAttribute> : IPropertySelectionBehavior
where TAttribute : Attribute {
public bool SelectProperty(Type type, PropertyInfo prop) {
return prop.GetCustomAttributes(typeof(TAttribute)).Any();
}
}
// Usage:
var container = new Container();
container.Options.PropertySelectionBehavior =
new PropertySelectionBehavior<ImportAttribute>();
container.RegisterSingle<IBus>(bus);
您可以使用以下代码来构建内容:
public static BuildUp(object instance) {
InstanceProducer producer =
container.GetRegistration(instance.GetType(), throwOnFailure: true);
Registration registration = producer.Registration;
registration.InitializeInstance(instance);
}