0

我正在研究 3tier 架构应用程序。A()在第 1 层中的哪个方法调用第 2 层中的方法,在第 3 层B()中调用C()方法,并以相反的顺序返回响应。

在每种方法中,我都使用 StringBuilder 创建方法执行的字符串跟踪,并使用 Microsoft Enterprinse 库将其写入 finally 块。

A()
{
  string.append("A() method started");
  B();
  string.append("A() method finished");
}

B()
{
  string.append("B() method started");
  C();
  string.append("B() method finished");
}

C()
{
  string.append("C() method started");
  some...task;
  string.append("C() method finished");
}

那么跟踪是:

string.append("C() method started");  
string.append("C() method finished");  
string.append("B() method started");  
string.append("B() method finished");  
string.append("A() method started");  
string.append("A() method finished");

这是相反的顺序。但我想要

string.append("A() method started");  
string.append("B() method started");
string.append("C() method started");
string.append("C() method finished");
string.append("B() method finished");
string.append("A() method finished");

那么什么是最好的方法或任何图书馆做同样的事情。有人建议我使用拦截器方法。

4

1 回答 1

0

是的,我同意这个建议。您可以尝试使用面向方面的编程 (AOP),您可以在其中进行方法拦截。尽管您可以通过反射和其他一些命名空间来做到这一点。但这样做很痛苦。

尽管默认情况下 C# 不是 AOP 语言,但有一些库可用于将 AOP 概念应用于 C#。一个是PostSharp。我相信您可以获得此版本的试用/免费版本。我发现它易于使用且非常简单。

于 2013-06-08T17:34:20.073 回答