ここで読むことができるように、私と 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);
}