Всем привет!
подскажите плиз возможное решение..
задача такая: нужен контейнер типа HashSet. также нужно при добавлении элементов в него выполнять доп. действия, например если элемент не соответствует каким-то условиям — генерить ошибку, а при ещё каких-то делать доп-е действия сбоку.
хочется это инкапсулировать в самом контейнере (чтобы те кто добавляет за это не заморачивались).
как хочется (простое решение) — наследоваться от HashSet и перекрывать метод типа OnAdd, но такого метода (и подобного) нету
((
другой способ который вижу (через ж) — в своём классе контейнере, реализовывать интерфейс ISet и тупо руками в каждом его методе перевызывать соотвествующий метод HashSet-а который живет во внутренней переменной (вроде это называется агрегация)....
неужели токо вторым способом можно решить задачу?...
спасибо!
Здравствуйте, MadHuman, Вы писали:
MH>Всем привет!
MH>подскажите плиз возможное решение..
MH>задача такая: нужен контейнер типа HashSet. также нужно при добавлении элементов в него выполнять доп. действия, например если элемент не соответствует каким-то условиям — генерить ошибку, а при ещё каких-то делать доп-е действия сбоку.
MH>хочется это инкапсулировать в самом контейнере (чтобы те кто добавляет за это не заморачивались).
MH>как хочется (простое решение) — наследоваться от HashSet и перекрывать метод типа OnAdd, но такого метода (и подобного) нету ((
А перекрытие метода Add подойдет?
public class MyHashSet<T> : HashSet<T>
{
public new bool Add(T item)
{
Console.WriteLine("MyhashSet");
return base.Add(item);
}
}
Здравствуйте, Andrii_Avramenko, Вы писали:
A_A>А перекрытие метода Add подойдет?
методы принимающие HashSet<T> будут вызывать метод Add из HashSet
... << RSDN@Home 1.2.0 alpha 5 rev. 1536>>