如何在编译时注入C#代码?

7 .net c# reflection aop trace

我希望能够使用自定义Trace属性修饰任何方法,并且应该在编译时将一些代码注入到该方法中.

例如:

[Trace]
public void TracedMethod(string param1)
{
   //method body
}
Run Code Online (Sandbox Code Playgroud)

应成为:

public void TracedMethod(string param1)
{
   Log.Trace("TracedMethod", "param1", param1);
   //method body
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,注入的代码取决于方法名称和方法参数,因此应该可以推断出此信息.

有谁知道如何做到这一点?

Ric*_*dle 13

要在C#中进行面向方面编程,可以使用PostSharp.

(主页甚至显示了一个Trace例子,就像你要求的那样!)