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

时间:2009-12-28 11:40:54

标签: c# .net

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

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

2 个答案:

答案 0 :(得分:10)

你或许可以通过PostSharp在这里用AOP做点什么;但是unles你会这样做很多,我赞成保持简单,只需添加额外的代码。

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

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

答案 1 :(得分:5)

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

我会尽量避免这种情况 - 或者如果没有别的办法就调用这种方法。