我想創建一個抽象類,定義一個抽象方法,它是從其他類中抽象出來的,這些類在抽象方法中實現了一些特定的行爲。我希望抽象類包含某種狀態信息,它代表派生類中的實現沒有錯誤,但我想在AbstractClass中實現所有狀態處理,而不是在派生類中實現。我想讓派生類完全不瞭解AbstractClass中的功能。下面是一個例子。我在代碼中提出了評論來描述我想要達到的目標。如何在基類中表示方法執行的狀態而不影響派生類中的實現?
public abstract class AbstractClass
{
public void Start()
{
ThreadStart ts = new ThreadStart(PerformWork);
Thread t = new Thread(ts);
t.Start();
Thread.Sleep(2000);
// Dependent on if ReportWork exited without expcetions
// I want to call ReportSuccess or ReportFailure from this method.
// However, I dont want to implement any reporting functionallity (or
// as little as possible)
// into the deriving classes PerformWork() method. Simply put
// I want the deriving classes to be totally unaware of the reporting.
}
public void ReportSuccess()
{
Console.WriteLine("Success!");
}
public void ReportFailure()
{
Console.WriteLine("Failure!");
}
public abstract void PerformWork();
}
一個類繼承自抽象類:
class ConcreteImplementationClass:AbstractClass
{
public override void PerformWork()
{
// Implements some functionality
// without knowing anything about
// whats going on in AbstractClass.
}
}
不要任何人有我如何能實現這一功能,否則我怎麼可以創建類似的東西有什麼建議?
換句話說,您希望在派生類上記錄方法調用。夠簡單。 AOP。看到我的答案。 – 2010-02-12 15:34:20
你能解釋爲什麼你需要這個線程? – 2010-02-12 21:13:02