Я хочу добавить события в некоторые встроенные классы .NET. Например, я хочу добавить следующие события в общий List(T)
:
- ItemAdded
- ItemRemoved
- ListChanged
- и т.д.
Я могу придумать несколько способов сделать это, но я не уверен, какой подход лучше.
- Я мог бы использовать « события расширения », то есть, если есть такая вещь или способ использовать методы расширения для симуляции событийной функциональности.
- Я мог бы унаследовать от
List(T)
и переопределить необходимые методы и свойства.
- Я мог бы унаследовать от
List(T)
и shadow необходимые методы и свойства.
- Я мог бы создать новый класс, который реализует
IList(T)
, а затем обернуть оставшуюся функциональность List(T)
, которая отсутствует IList(T)
.
Очевидно, что вариант 4 - самая большая работа, которая не имеет большого значения, если бы я хотел расширить только один класс. Однако я также хочу избежать неприятных побочных эффектов.
Каковы преимущества, недостатки и предостережения для каждого подхода?
Примечание. Меня не особо интересует IList (T). Я обнаружил, что хочу добавить «события расширения» и к другим классам.