【发布时间】:2010-05-25 15:32:47
【问题描述】:
假设我们有 2 个类 Child 和它所继承的类 Parent。
class Parent
{
public static void MyFunction(){}
}
class Child : Parent
{
}
是否可以在父类中确定方法是如何被调用的?因为我们可以用两种方式称呼它:
Parent.MyFunction();
Child.MyFunction();
我目前的方法是尝试使用:
MethodInfo.GetCurrentMethod().ReflectedType; // and
MethodInfo.GetCurrentMethod().DeclaringType;
但两者似乎都返回 Parent 类型。
如果您想知道我到底想要完成什么(以及为什么我违反了基本的 OOP 规则,即父母不必了解孩子的任何事情),简而言之就是(让我知道如果你想要长版):
我有一个模型结构,代表我们的一些数据,这些数据持久存在数据库中。所有这些模型都继承自一个抽象的 Parent。这个父对象实现了几个事件,例如 SaveEvent、DeleteEvent 等。我们希望能够订阅特定于该类型的事件。因此,即使事件在父级中,我也希望能够做到:
Child.SaveEvent += new EventHandler((sender, args) => {});
我已经准备好了一切,其中事件实际上由事件处理程序字典支持,按类型散列。我需要做的最后一件事是在执行 Child.SaveEvent 时正确检测 Child 类型。
我知道我可以在每个子类中实现事件(甚至通过使用抽象来强制它),但最好将它全部保存在父类中,这是实际触发事件的类(因为它实现了常用的保存/删除/更改功能)。
【问题讨论】:
标签: c# .net-3.5 inheritance static-methods