Как отписаться от события - C#

Узнай цену своей работы

Формулировка задачи:

Доброе время суток! В общем ситуация такая: есть три класса("Class1","Class2","Class3")... "Class1" содержит публичное событие "Event1" Структура "Class2":
class Class2
{
    private Class1 _fieldName;
    public Class1 FieldName
    {
            get { this._fieldName }
    }
    public Class2()
    {
      this._fieldName.Event1 += new System.EventHandler(method1);
    }
     private void method1(object sender, EventArgs e)
     {
     }
}
Структура "Class3":
class Class3 : Class2
{
    public Class3(): base()
    {
      // тут нужно отписаться
    }
 
}
Примичание: Доступа к редактированию классов 1 и 2 нету, также в классе 3 вызывать базовый конструктор обязательно... Спасибо за помощь... Писал по памяти, если есть вопросы спрашивайте!!!

Решение задачи: «Как отписаться от события»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    interface IMethod
    {
        void Method(object sender, EventArgs e);
    }
 
    class Class1
    {
        public event EventHandler<EventArgs> EventMetod = delegate { };
 
        public void FireEvent()
        {
            EventMetod(this, new EventArgs());
        }
    }
 
    class Class2:IMethod
    {
        private Class1 class1;
        public event EventHandler<EventArgs> EventMethod 
        {
            add { class1.EventMetod += value; }
            remove { class1.EventMetod -= value; }
        }
        
        public Class2()
        {
            class1 = new Class1();
            this.EventMethod += new EventHandler<EventArgs>(((IMethod)this).Method);
            FireEvent();
        }
 
        public void FireEvent()
        {
            class1.FireEvent();
        }
 
        void IMethod.Method(object sender, EventArgs e)
        {
            Console.WriteLine("Test!!!");
        }
    }
 
    class Class3:Class2
    {
        public Class3():base()
        {
            this.EventMethod -= new EventHandler<EventArgs>(((IMethod)this).Method);
            FireEvent();
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            Class3 obj = new Class3();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.455 из 5
Похожие ответы