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}\r\n", 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(); } } }
时间: 2024-10-12 22:08:20