【发布时间】:2019-02-19 15:58:56
【问题描述】:
我很可能会在这里得到否定的答案,但我想问我的问题。
在 C# 中是否有一种方法可以在任何子类方法之前(或之后)调用父方法。
public class Base
{
protected static void ThisWillBeCalledBeforeAnyMethodInChild()
{
//do something, e.g. log
}
protected static void ThisWillBeCalledAFTERAnyMethodInChild()
{
//do something, e.g. log
}
}
public class SomeClass : Base
{
public static void SomeMethod1()
{
//Do something
}
public static void SomeMethod2()
{
//Do something
}
}
所以,我想在 SomeMethod1 或 SomeClass 中的 SomeMethod1 或 SomeMethod2 之前运行基类中的 ThisWillBeCalledBeforeAnyMethodInChild 方法。与 after 方法类似。
有什么方法可以在不使用反射调用方法的情况下做到这一点?
【问题讨论】:
-
这是您所期望的答案:不。除非在编译时重写代码,或者在运行时生成代理类型(例如方法)。
-
static 很难做到这一点。
标签: c# inheritance