Как отписаться от события - C#
Формулировка задачи:
Доброе время суток!
В общем ситуация такая: есть три класса("Class1","Class2","Class3")...
"Class1" содержит публичное событие "Event1"
Структура "Class2":
Структура "Class3":
Примичание: Доступа к редактированию классов 1 и 2 нету, также в классе 3 вызывать базовый конструктор обязательно...
Спасибо за помощь...
Писал по памяти, если есть вопросы спрашивайте!!!
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)
{
}
}class Class3 : Class2
{
public Class3(): base()
{
// тут нужно отписаться
}
}Решение задачи: «Как отписаться от события»
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();
}
}
}