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();
            }
    
        }
    }
  • 相关阅读:
    UVA 12545 Bits Equalizer
    UVA 1610 Party Games
    UVA 1149 Bin Packing
    UVA 1607 Gates
    UVA 12627 Erratic Expansion
    UVA10562-Undraw the Trees(递归)
    UVA10129-Play on Words(欧拉路径)
    UVA816-Abbott's Revenge(搜索进阶)
    UVA1103-Ancient Messages(脑洞+dfs)
    UVA839-Not so Mobile
  • 原文地址:https://www.cnblogs.com/blackice/p/5834357.html
Copyright © 2011-2022 走看看