我目前正在編寫一個C#庫以簡化實現小物理模擬/實驗。C#中的虛擬方法或事件#
主要組件是SimulationForm
,它在內部運行定時器循環並隱藏用戶的樣板代碼。
Init()
(初始化一切)Render(Graphics g)
(渲染當前的仿真狀態)Move(double dt)
(移動實驗dt
秒)
我:實驗本身只是通過三種方法來定義只是想知道讓用戶實現這些功能有什麼更好的選擇:
1)虛擬方法,由繼承的形式覆蓋
protected virtual void Init() {}
...
或
2)活動
public event EventHandler<MoveSimulationEventArgs> Move = ...
...
編輯:注意方法應該是不抽象反正。實際上,還有更多,其中沒有一個已經實現了。因爲許多模擬不需要它們,所以將它們排除在外通常很方便。
很酷的事情有關這是一個「範式」是,你可以寫
partial class frmMyExperiment : SimulationForm {
}
,你就完全能夠與設計師和所有繼承的控制和設置/特性交互。我不想通過完全不同的方法失去這個功能。
對所需方法的「抽象」+1。 – 2009-12-16 20:29:58
IMO,摘要FTW。 – Yoopergeek 2009-12-16 20:30:32
摘要不適合,但「功能但notifcation」是一個好點+1 – Dario 2009-12-16 20:44:30