我有一个类,每个方法都以相同的方式启动:
internal class Foo { public void Bar() { if (!FooIsEnabled) return; //... } public void Baz() { if (!FooIsEnabled) return; //... } public void Bat() { if (!FooIsEnabled) return; //... } }
对于类中的每个公共方法,是否有一种很好的方法来要求(并且希望不是每次都写入)FooIsEnabled部分?
我检查Is there an elegant way to make every method in a class start with a certain block of code?,但这个问题是针对Java的,其答案是使用Java Library.
解决方法
您正在寻找的主要是来自
Aspect Oriented Programming或AOP域的拦截.
虽然C#不直接支持它,但有坚实的选择:
> Postsharp
> Unity Interception
> Spring.NET
> Castle Interceptors
如果我明天有空,我会为你做一个例子……