приемы работы с IDictionary
От: Visor2004  
Дата: 22.06.11 17:39
Оценка:
Довольно часто приходится работать со словарями, делаю обычно таким образом:

    private registeredEvents : IDictionary [ Type, System.Collections.Generic.ICollection [ PresentationEvent ] ];

    public Register ( name : string, eventDirection : EventDirection, handlerType : Type, ownerType : Type ) : PresentationEvent
    {
      def newEvent = PresentationEvent ( name, ownerType, eventDirection, handlerType );
      mutable existingEvents : System.Collections.Generic.ICollection [ PresentationEvent ] = null;
      when ( ! registeredEvents.TryGetValue ( ownerType, out existingEvents ) )
      {
        existingEvents = List ( );
        registeredEvents [ ownerType ] = existingEvents;
      }
      existingEvents.Add ( newEvent );
      newEvent;
    }


Вопрос в следующем, можно ли как-то упростить код функции Register таким образом, чтоб избавиться от изменяемой переменной и ветвления when, есть ли какой-то общепринятый красивый паттерн для таких случаев?
Помните!!! ваш говнокод кому-то предстоит разгребать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.