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