我有一个类,其中这个类是一个私有方法和许多公共方法.每次调用任何其他方法之前,都必须调用此私有方法.
最简单的方法是在每个方法中调用方法,但我不喜欢这种方法.有没有其他方法来实现这一目标?
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)
这是面向方面编程的典型情况.据我所知,在.NET中没有简单的方法可以做到这一点(除了在运行时使用字节码增强或创建派生类,这两种情况都不容易.有些库正在这样做,例如spring.net.我我不确定你是否真的需要这个.)
我会尽量避免这种情况 - 如果没有别的办法,可以调用这种方法.