public Class A
{
public A()
{
someotherclass.someevent += new EventHandler(HandleEvent);
}
private void HandleEvent(object sender,CustomEventArgs e)
{
if(e.Name == "Type1")
Method1();
else if(e.Name == "Type2")
Method2();
}
protected virtual void Method1(){}
protected virtual void Method2(){}
}
public class B: A
{
public B()
{ /*Something*/}
protected override void Method1(){/*some logic*/}
protected override void Method2(){/*some other logic*/}
}
public class C: A
{
public C()
{ /*Something*/}
protected override void Method1(){/*some logic*/}
protected override void Method2(){/*some other logic*/}
}
public class Main
{
private A;
public Main(){/*Something*/}
private void StartB()
{
A = new B();
}
private void StartC()
{
A = new C();
}
}
,发生的事情是,我经过一个循环,这两种方法STARTB(称为第一)和StartC(称为第二)被调用,someevent被触发时,代码后试图在B级执行方法(后来C类,我希望,我不能到那里,因为它出现了错误时,它调用B中类的方法),而不是我想它来调用只有方法C类。错误派生类方法对事件执行?现在
我认为,由于事件是在构造认购,B类方法仍然被解雇,因为它最初认购的STARTB的召唤。
问:
我只想被实例化应执行最新的类的方法。
例如:如果STARTB和StartC被称为以,当someevent被触发C类的方法只能得到执行。相同的副Versa。怎么做?
我知道我做一些可怕的错误。任何帮助深表感谢。
什么问题?你说的是正确的,但你没有问过任何问题 – flipchart