每次调用任何其他方法之前调用方法

use*_*348 7 .net c#

我有一个类,其中这个类是一个私有方法和许多公共方法.每次调用任何其他方法之前,都必须调用此私有方法.

最简单的方法是在每个方法中调用方法,但我不喜欢这种方法.有没有其他方法来实现这一目标?

Mar*_*ell 10

你可以在这里用AOP做一些事情,也许是通过PostSharp ; 但unles你要做到这一点很多,我赞成保留简单的争论,只需添加额外的代码.

当然,如果您需要多态并且需要覆盖仍然首先调用该方法(可能涉及公共非虚方法和受保护的虚方法),它会变得更复杂:

public void Foo() {
    Bar()
    FooCore();
}
protected virtual void FooCore() {...} // default Foo implementation
private void Bar() {...} // your special code
Run Code Online (Sandbox Code Playgroud)


Ste*_*ger 5

这是面向方面编程的典型情况.据我所知,在.NET中没有简单的方法可以做到这一点(除了在运行时使用字节码增强或创建派生类,这两种情况都不容易.有些库正在这样做,例如spring.net.我我不确定你是否真的需要这个.)

我会尽量避免这种情况 - 如果没有别的办法,可以调用这种方法.