我在 .NET 4 中有一个基于集合的项目。我的意思是,我有一个主集合,称之为“系统”,它由框架组成,每个框架都由卡片组成,卡片依次制作频道。所以,它看起来像 System->Frame->Card->Channel。所有这些都表示为对象,并且它们之间存在父子关系。本质上,Channel 只暴露给 Card,Card 只暴露给 Frame,Frame 只暴露给 System。
理想情况下,我希望仅将 System 类中的方法公开给外界。但是,在 Channel、Card 和 Frame 类中会发生一些关键事件。目前,我处理它们的方式是通过传播。假设 Channel 中发生了一个事件。此事件首先在 Card 中引发,然后在 Frame 中引发,最后在 System 中引发。您可以看到这是如何产生大量代码的。但我主要关心的不是代码,而是性能。
你认为这种传播会严重影响我的表现吗?有没有办法让它更有效率?我还有什么其他选择?我的收藏比较少。System 为 1,Frames < 16,Cards < 256,Channels < 8192。大部分数据存储在 Channel 类中,其中只有原始对象。
编辑
这是我在 Card 中针对 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 类中将 Channel 添加到 Card 时,我调用:
channel.ChannelPropertyChanged += this.OnChannelPropertyChanged;