1

Capability物理デバイスの各機能をモデル化する抽象クラスがあります。次に、などのサブクラスがInputSwitchあり、TemperatureSensorそれぞれが異なるイベントを発生させることができます。

InputSwitchはかなり簡単です。物理スイッチを押すと、それを表すオブジェクトがイベントを発生させますTriggered

TemperatureSensor2つのイベントがあるという点で少し複雑です-TemperatureOKTemperatureAlarm

これらの2つのサブクラスだけでなく、それぞれが発生させる可能性のあるイベントが異なります。実行時に追加されたサブクラスのインスタンスがさらに存在する場合もあります。

エンドユーザーは、これらのイベントがトリガーされたときに何が発生するかを指定できる必要があるため、基本的に、ユーザーがすべてのCapabilityインスタンスで発生する可能性のあるイベントを参照できるようにすることを検討しています。各機能は現在、に保存されていList<Capability>ます。

利用可能なイベントを列挙する方法はありますか?

4

1 に答える 1

1

各具象タイプに適用可能なイベントのリストを含む、機能オブジェクトの具象タイプによってキー設定されたディクショナリを維持することをお勧めします。

例:ConcurrentDictionary<Type, EventInfo[]>

起動時にこれを1回だけ入力Type.GetEventsし、システムで使用される各具体的な機能タイプを呼び出します(または、実行時に何らかのプラグインメカニズムを介して機能タイプを追加できる場合は、プラグインのように各プラグインタイプのイベントをディクショナリに追加します登録済み)。

その後、から機能を選択するとList<Capability>、そのデバイスオブジェクトで使用可能なイベントを辞書で検索できます。

于 2012-07-02T11:03:34.807 に答える