void Change(Class1 obj)
{
Clear();
var ev = new Action<string>(func1);
delegates.Add(ev);
obj.Add += func1;
}
void Clear()
{
while (delegates.Count > 0)
{
var d = delegates[0];
delegates.Remove(d);
d = null;
}
}
Powyższy kod nie działa, ale jest to schemat, który by mnie "zadowalał". Muszę podpiąć pod różne zdarzenia z różnych obiektów konkretne funkcje. Te delegaty mogę zebrać w jednym miejscu, np. liście ("delegates"). Jednak przy zmianie i przypisaniu muszę wcześniej je pousuwać, co powinna robić funkcja Clear().
Jak można wprawić to wszystko w ruch, by działało jak powinno ?
Od razu mówię, że nie mogę całkowicie wyczyścić "InvocationList" z danego eventu. Mogą tam być przypisane również inne funkcje, które muszą pozostać. Chcę usunąć jedynie to co przypisałem wewnątrz tej funkcji, dlatego zbieram je na liście.
Dobrze by było gdyby rozwiązanie było stosunkowo szybkie.