首页 > 代码库 > RealProxy实现AOP编程(2)
RealProxy实现AOP编程(2)
稍微变化一下!注意区别。
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编程(2)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。