zoukankan      html  css  js  c++  java
  • C# 使用KingAOP面向切面编程

    1. 在Nuget中安装KingAOP

    2. 日志DEMO

        public class Test : IDynamicMetaObjectProvider
        {
            [LogAspec]
            public void TestMethod()
            {
                Console.WriteLine("输出正文来呀");
                throw new ArgumentNullException("user name could not be null");
            }
    
            public DynamicMetaObject GetMetaObject(System.Linq.Expressions.Expression parameter)
            {
                // need for AOP weaving
                return new AspectWeaver(parameter, this); 
            }
        }
    
        public class LogAspec : OnMethodBoundaryAspect
        {
            public override void OnEntry(MethodExecutionArgs args)
            {
                Console.WriteLine("OnEntry: Hello KingAOP");
            }
            public override void OnException(MethodExecutionArgs args)
            {
    
                Console.WriteLine("OnException: Hello KingAOP");
    
            }
            public override void OnSuccess(MethodExecutionArgs args)
            {
                Console.WriteLine("OnSuccess: Hello KingAOP");
            }
    
            public override void OnExit(MethodExecutionArgs args)
            {
                Console.WriteLine("OnExit: Hello KingAOP");
            }
        }
        public class LoggingHelper
        {
            private const String _errLogFilePath = @"D:log.txt";
    
            public static void WriteLine(String message)
            {
    
                var logContent = string.Format("[{0}]{1}
    ", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), message);
                File.AppendAllText(_errLogFilePath, logContent);
    
            }
        }

    3. 调用DEMO

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    namespace WebApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
                dynamic test = new Test();
                try
                {
                    test.TestMethod();
                }
                catch (Exception ex)
                {
    
                }
                
    
                Console.Read();
            }
    
        }
    }
  • 相关阅读:
    日记
    没有起得晚的周末,希望今天能做一些什么
    怎么就这么喜欢测软件呢?—— Google Calendar农历问题
    Sharepoint带自定义属性的FieldType
    自己使用Outlook 2003 的一些小技巧
    Xml名称空间
    c# jingtailei 静态成员
    select count
    varchar nvarchar(转)
    linq 笔记(1)
  • 原文地址:https://www.cnblogs.com/blackice/p/5834357.html
Copyright © 2011-2022 走看看