2012-04-29 11 views
0

私のバインディングに関しては、ちょっとした奇妙な状況があります。Ninjectコンテキストバインディングマジック

私はいくつかのイベントソースと、それらにサブスクライブしたいクラスがあります。私はソースの異なるインスタンスを持っていますが(それらはすべて同じクラスです)、サブスクライバのタイプは異なるクラス間で変更される可能性があります。私はISubscribeTo<T>が活性化にそれを通過ISubscribableのインスタンスを持っている任意の型を持ちたい

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

public interface ISubscribable {} 

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

ActivationStrategyを使用してこれらを結ぶと、これはかなり簡単です。

私が抱えている合併症は、私がどのクラスを起動しているかによって変わってきます。ISubscribeTo<T>です。

私のActivationStrategyでは、私はカーネルのGetAllメソッドを呼び出していますが、どういうわけか、要求に対してすでにアクティブ化されているインスタンスしか取得しないとします。

私はこれをどのように達成することができるかについての提案はありますか?

答えて

1

イベントブローカーをご覧ください。彼らは、独自のメカニズムを追加することなく、他のコンポーネントからのイベントを簡単に購読することができます。 the tutorial

https://github.com/ninject/ninject.extensions.bbveventbroker