假設我們有2個類,Child和它繼承的類,Parent。在父類上調用靜態方法時,父類是否可以推導子類(C#)上的類型?
class Parent
{
public static void MyFunction(){}
}
class Child : Parent
{
}
是否有可能在父類中確定如何調用該方法?因爲我們可以把它叫做兩種方式:
Parent.MyFunction();
Child.MyFunction();
我目前的做法是試圖用:
MethodInfo.GetCurrentMethod().ReflectedType; // and
MethodInfo.GetCurrentMethod().DeclaringType;
但似乎都返回父類型。
如果你想知道我到底想要完成什麼(以及爲什麼我違反了基本的OOP規則,父母不應該知道關於孩子的任何內容),那麼這就是(讓我知道你是否想要長版本):
我有一個模型結構,代表我們保留到數據庫的一些數據。所有這些模型都從一個抽象的Parent繼承。這個父節點實現了一些事件,比如SaveEvent,DeleteEvent等。我們希望能夠訂閱特定於該類型的事件。因此,即使該事件是在父,我希望能夠做到:
Child.SaveEvent += new EventHandler((sender, args) => {});
我在的地方,該事件實際上是由事件處理程序的字典,按類型散列支持一切。我需要做的最後一件事是在做Child.SaveEvent時正確檢測Child類型。
我知道我可以在每個子類中實現事件(甚至通過使用抽象來強制它),但將它全部保存在父類中會很好,這是實際觸發事件的類(因爲它實現常用的保存/刪除/更改功能)。
不錯。哦,C#事件的大師,是否有任何技巧使用EventHandler Event {add {} remove {}}方法來完成類型化事件? – Matt 2010-05-25 15:36:36