したがって、次のようなコンストラクターを持つクラスIConnectionFactory
によって実装されたインターフェイスがあります。NMSConnectionFactory
public NMSConnectionFactory(string providerURI, params object[] constructorParams)
これらはオンデマンドで作成する必要があり、providerURI
実行時にのみ認識されます。だから私は私のために s を作成するデリゲートベースのファクトリを使用しようとしてIConnectionFactory
います (それを と呼びましょうconnectionFactoryProvider
)。
Castleのドキュメントを読んだ後、私はこれを試しました:私の他のクラスのコンストラクターは、このファクトリに依存しています:
public ActiveMqSessionPool(Func<string, IConnectionFactory> connectionFactoryProvider)
{...}
このコンストラクター内で、プロバイダーを使用してIConnectionFactory
sを作成します。
var connectionFactory = _connectionFactoryProvider("my destination");
ただし、この最後の行を実行すると、NMSConnectionFactory がこれらの依存関係を待機していることを示すエラーが表示されます。
- Parameter 'providerURI' which was not provided. Did you forget to set the dependency?
- Service 'System.Object[]' which was not registered.
providerURI
NMSConnectionFactory コンストラクターに渡すにはどうすればよいですか?
これは、私のコンポーネント登録がこれまでにどのように見えるかです:
container.Register(Component.For<IConnectionFactory>()
.ImplementedBy<NMSConnectionFactory>())
.Register(Component.For<ISessionPool>()
.ImplementedBy<ActiveMqSessionPool>().LifeStyle.Transient)
.AddFacility<TypedFactoryFacility>();
他に何か設定する必要がありますか? ここで何が欠けていますか?