У меня есть проект на основе коллекции в .NET 4. Я имею в виду, что у меня есть основная коллекция, называемая "Система", которая состоит из фреймов, каждая из которых состоит из карточек, которые, в свою очередь, сделаны вверх каналов. Итак, это выглядит как Система-> Фрейм-> Карта-> Канал. Все они представлены в виде объектов, и между ними существует связь «родитель-ребенок». По сути, Channel доступен только Card, Card доступен только Frame, а Frame доступен только System.
В идеале я хотел бы предоставлять внешнему миру методы только из класса System. Однако в классах Channel, Card и Frame происходят важные события. В настоящее время я обращаюсь с ними через размножение. Предположим, в канале произошло событие. Это событие сначала возникает в Card, затем в Frame и, наконец, в System. Вы можете видеть, как это приводит к большому количеству кода. Но меня больше всего беспокоит не код, а производительность.
Как вы думаете, это распространение плохо влияет на мою производительность? Есть ли способ сделать его более эффективным? Какие еще у меня есть варианты? Мои коллекции относительно небольшие. Система - 1, Фреймы ‹16, Карты‹ 256, Каналы ‹8192. Большая часть данных хранится в классе Channel, в котором есть только примитивные объекты.
РЕДАКТИРОВАТЬ
Вот код, который у меня есть в Card для события, вызываемого каналом:
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.ChannelPropertyChanged += this.OnChannelPropertyChanged;