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类型.
我知道我可以在每个子类中实现事件(甚至通过使用抽象来强制它),但是将它全部保存在父类中会很好,这是实际触发事件的类(因为它实现了公共保存/删除/更改功能).
| 归档时间: |
|
| 查看次数: |
397 次 |
| 最近记录: |