c# - 有没有一种优雅的方法可以让类中的每个方法都以 C# 中的某个代码块开始?

标签 c#

我有一个类,其中每个方法都以相同的方式开始:

internal class Foo {
  public void Bar() {
    if (!FooIsEnabled) return;
    //...
  }
  public void Baz() {
    if (!FooIsEnabled) return;
    //...
  }
  public void Bat() {
    if (!FooIsEnabled) return;
    //...
  }
}

有没有一种很好的方法来要求(希望不是每次都写)类中每个公共(public)方法的 FooIsEnabled 部分?

我检查 Is there an elegant way to make every method in a class start with a certain block of code? ,但是这个问题是针对 Java 的,它的答案是使用 Java 库。

最佳答案

您要查找的主体是来自 Aspect Oriented Programming 域的拦截或 AOP。

虽然 C# 不直接支持它,但有可靠的选择:

  1. Postsharp
  2. Unity Interception
  3. Spring.NET
  4. Castle Interceptors

如果我明天有时间,我会为你做一个例子......

关于c# - 有没有一种优雅的方法可以让类中的每个方法都以 C# 中的某个代码块开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31153253/

相关文章:

c# - 解析 "Singleton"内的 InstancePerHttpRequest

c# - 如何修复此内存错误

c# - 从 XP 及更高版本获取 Windows 操作系统名称

c# - 将 foreach 替换为 LINQ 表达式

c# - 运行提升的进程

c# - 如何更改 WPF 应用程序的图标

c# - 如何在 ASP.Net 中将 word 转换为 pdf

c# - 从 XML 生成不同的 JSON

c# - app.config 怪异

c# - 如何将HL7格式的文本转换为HTML?