在父类上调用静态方法时,父类可以推断出子类型(C#)的类型吗?

Mat*_*att 1 c# inheritance static-methods .net-3.5

假设我们有2个类,Child,以及它继承的类,Parent.

class Parent
{
    public static void MyFunction(){}
}

class Child : Parent
{
}
Run Code Online (Sandbox Code Playgroud)

是否有可能在父类中确定如何调用该方法?因为我们可以用两种方式来称呼它:

Parent.MyFunction();
Child.MyFunction();
Run Code Online (Sandbox Code Playgroud)

我目前的方法是尝试使用:

MethodInfo.GetCurrentMethod().ReflectedType; // and
MethodInfo.GetCurrentMethod().DeclaringType;
Run Code Online (Sandbox Code Playgroud)

但两者似乎都返回父类型.

如果你想知道什么,我正在努力完成(为什么我违反了父母不应该对孩子有任何了解的基本OOP规则),这就是它的缺点(如果你想要,请告诉我)长版):

我有一个Model结构,表示我们持久存储到数据库的一些数据.所有这些模型都从一个抽象的Parent继承.此父实现了一些事件,例如SaveEvent,DeleteEvent等.我们希望能够订阅特定于该类型的事件.所以,即使事件在父母身上,我也希望能够做到:

Child.SaveEvent += new EventHandler((sender, args) => {});
Run Code Online (Sandbox Code Playgroud)

我有一切就绪,事件实际上由事件处理程序字典支持,按类型进行哈希处理.我需要做的最后一件事就是在做Child.SaveEvent时正确检测Child类型.

我知道我可以在每个子类中实现事件(甚至通过使用抽象来强制它),但是将它全部保存在父类中会很好,这是实际触发事件的类(因为它实现了公共保存/删除/更改功能).

Jon*_*eet 5

否 - 调用Child.MyFunction()导致IL Parent.MyFunction()直接调用.生成的二进制文件基本上无法区分.