RealProxy实现AOP编程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RealProxy实现AOP编程相关的知识,希望对你有一定的参考价值。
稍微变化一下!注意区别。
Program.cs
class Program { static void Main(string[] args) { User user = new User() { Name = "李四", Password = "12121" }; var processor = TransparentProxy.Create(new UserProcessor()); processor.Shopping(user); Console.ReadLine(); } }
User.cs
public class User { public string Name { get; set; } public string Password { get; set; } }
IUserProcessor.cs
public interface IUserProcessor { void Shopping(User user); }
UserProcessor.cs
public class UserProcessor : IUserProcessor { public void Shopping(User user) { Console.WriteLine("买呀,买呀,买桃子!"); } }
UserProxyProcessor.cs
class UserProxyProcessor<T> : RealProxy { private T processor; public UserProxyProcessor(T processor) : base(typeof(T))//不能丢 { this.processor = processor; } public override IMessage Invoke(IMessage msg) { PreShopping(); IMethodCallMessage message = (IMethodCallMessage)msg; object result = message.MethodBase.Invoke(processor, message.Args); PostShopping(); return new ReturnMessage(result, new object[0], 0, null, message); } private void PreShopping() { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("买东西前,判断是否注册了!"); Console.ResetColor(); } private void PostShopping() { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("买完东西后,写个日志文件!"); Console.ResetColor(); } }
TransparentProxy.cs
public static class TransparentProxy { public static IUserProcessor Create(IUserProcessor obj) { var processor = new UserProxyProcessor<IUserProcessor>(obj); IUserProcessor transparentProxy = (IUserProcessor)processor.GetTransparentProxy(); return transparentProxy; } }
以上是关于RealProxy实现AOP编程的主要内容,如果未能解决你的问题,请参考以下文章