假设我们有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