2011-02-01 69 views

回答

4

我认为你在寻找什么叫做面向方面编程。有很多C#库可以帮助解决这个问题。其中一个名为PostSharp(PostSharp的免费版本支持此功能)。这里是一个类似于驼鹿示例的例子。这将创建您可以在其他方法使用跟踪属性就这一额外功能的策略:

[Serializable] 
public class TraceAttribute : OnMethodBoundaryAspect 
{ 

    public override void OnEntry(MethodExecutionArgs args) 
    { 
     Trace.WriteLine("about to call method"); 
    } 

    public override void OnExit(MethodExecutionArgs args) 
    { 
     Trace.WriteLine("just finished calling method"); 
    } 
} 

你将它添加到方法“富”通过将跟踪前右它的属性:

[Trace] 
public void Foo() { /* ... */ } 

现在,当Foo执行时,上面的OnEntry方法将在它之前运行,并且OnExit将在其后运行。

+0

我可以修改参数,因为它们传递给函数?我看到我收到了他们,但我无法从文档中看出我是否可以改变它们。 – rpkelly 2011-02-02 05:57:43

0

不,不是它在穆斯完成的方式。你可能想看看一些AOP库。