私は.NET 4でコレクションベースのプロジェクトを持っています。つまり、マスターコレクションがあり、それを「システム」と呼びます。これは、フレームで構成され、それぞれがカードで構成され、順番に作成されますチャンネルのアップ。つまり、System->Frame->Card->Channel のようになります。これらはすべてオブジェクトとして表現され、それらの間には親子関係があります。基本的に、Channel は Card にのみ公開され、Card は Frame にのみ公開され、Frame は System にのみ公開されます。
理想的には、System クラスのメソッドのみを外部に公開したいと考えています。ただし、Channel、Card、および Frame クラスで発生する重要なイベントがあります。現在、私がそれらを処理する方法は、伝播によるものです。チャネルでイベントが発生したとします。このイベントは、最初に Card で発生し、次に Frame で発生し、最後に System で発生します。これにより、大量のコードが生成されることがわかります。しかし、私の主な関心事はコードではなく、パフォーマンスです。
この伝播は私のパフォーマンスに悪影響を与えると思いますか? より効率的にする方法はありますか?他にどのようなオプションがありますか? 私のコレクションは比較的小さいです。System is 1, Frames < 16, Cards < 256, Channels < 8192. ほとんどのデータは Channel クラスに保存され、その中にプリミティブ オブジェクトしかありません。
編集
チャネルによって発生するイベントのカードにあるコードは次のとおりです。
protected virtual void OnChannelPropertyChanged(Object sender, PFPropertyChangedEventArgs e)
{
try
{
EventHandler<PFPropertyChangedEventArgs> handler = ChannelPropertyChanged;
TestEventArgs_ChannelPropertyChanged = e;
if (handler != null)
{
handler(sender, e);
}
}
catch (Exception ex)
{
Milltown.MTCore.mtException mtEx = new Milltown.MTCore.mtException((int)PFExceptions.Exception_Hidden_FuctionLevel, ex,
PFCommonVariables.ApplicationPlatform, PFCommonVariables.ApplicationDataSource, "PFCard:OnChannelPropertyChanged");
}
}
Card クラス内の Card に Channel を追加するときは、次のように呼び出します。
channel.ChannelPropertyChanged += this.OnChannelPropertyChanged;