AOP的最佳注入方式——MSIL注入

下载PostSharp(Visual Studio Gallery)。

安装一个AOP编译器和引入PostSharp.Aspects(注意安装过程中请使用免费的Express版本),然后初步演示代码:

using PostSharp.Aspects;
using System;

namespace ConsoleApplication1
{
    [Serializable]
    public class AOPILTestAttribute : OnMethodBoundaryAspect
    {
        public override void OnEntry(MethodExecutionArgs args)
        {
            Console.WriteLine("进入方法:"+args.Method.Name);
            var argumentList = args.Arguments;
            var arguments = args.Method.GetParameters();

            for (int i = 0; i <arguments.Length; i++)
            {
                Console.WriteLine("参数名称:" + arguments[i].Name + "\t参数类型:" + arguments[i].ParameterType + "\t参数数值:" + argumentList[i]);
            }
        }
    }
    public class MainTest
    {
        public event Action<int> MyAction = null;

        public void Call()
        {
            MyAction(1);
        }
        [AOPILTest]
        static void Main(string[] args)
        {
            Console.WriteLine("我是Main方法");
            MainTest mt = new MainTest();
            mt.MyAction += mt_MyAction;
            mt.Call();
        }
        [AOPILTest]
        static void mt_MyAction(int i)
        {
            Console.WriteLine("我是Action,我的数值是:"+i);
        }
    }
}

 

posted @ 2015-04-25 09:09  Serviceboy  阅读(485)  评论(0编辑  收藏  举报