@daniil14056

Как изменить свойства всех экземпляров класса через статический метод этого класса?

Есть класс к экземплярам которого, где бы они не были можно применить какую-то операцию допустим. К примеру есть компоненты, у которых есть поле цвета, и хотелось бы что бы можно было через 1 класс, взять и изменить всем экземплярам этого класса это цвет.
1. Разумно ли так делать, или можно по другому?
2. Есть тут утечки
class A
{
    
    static public event Action actions; //static HashSet<Actions> actions = new HashSet<Actions>();
     public Color FontColor;
     public Action<Color> action ;
     public A()
    {
        action== (s)=>{ FontColor=s;};
        actions+=action;
    }
    ~A(){
       actions-=action;
      }
       static void Notify()
            {
                actions?.Invoke();
            }
}

А этот код точно не рабочий, деструктор не вызывается не знаю почему
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
yarosroman
@yarosroman Куратор тега C#
C# the best
1. Деструктор вызывается сборщиком мусора. И когда он будет вызван неизвестно.
2. Реализуете IDisposable и используйте конструкцию using, тогда точно будет вызывается метод Dispose у объекта.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
class A
{
    
     static List<A> list = new List<A>(); //static HashSet<Actions> actions = new HashSet<Actions>();
     public Color FontColor;
     public A()
     {
        list.Add(this);
     }
     static void Notify(Color color)
     {
         foreach (A a in list) {
             a.FontColor = color;
         }
     }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы