0

ビンディングに関しては、少し奇妙な状況があります。

いくつかのイベント ソースと、それらをサブスクライブしたいクラスがあります。ソースのインスタンスは異なりますが (すべて同じクラスになりますが)、サブスクライバーの型はクラスによって異なる場合があります。

これまでの私のアプローチは次のようなものです。

public interface ISubscribeTo<T> where T : ISubscribable
{
  void Subscribe(T eventSource);
}

public interface ISubscribable {}

アクティベーション時に渡されISubscribeTo<T>たのインスタンスを持つ任意のタイプが必要です。ISubscribable

ActivationStrategyを使用してこれらのものを配線する場合、これは非常に簡単です。

私が持っている複雑な点は、ISubscribeTo<T>アクティブ化しているクラスによって s が異なることです。

私のActivationStrategyでは、カーネルのGetAllメソッドへの呼び出しがありますが、リクエストに対して既にアクティブ化されているインスタンスのみを何らかの方法で取得したいと考えています。

これを達成する方法について何か提案はありますか?

4

1 に答える 1

1

イベントブローカーを見てください。これにより、独自のメカニズムを追加することなく、他のコンポーネントからのイベントを非常に簡単にサブスクライブできます。チュートリアルを見る

https://github.com/ninject/ninject.extensions.bbveventbroker
于 2012-04-30T08:20:58.757 に答える