当前位置:网站首页 / C#人爱学不学 / 正文

写给自己的Castle.NET 4.0笔记[1]

时间:2016年06月14日 | 作者 : aaronyang | 分类 : C#人爱学不学 | 浏览: 2423次 | 评论 0

最新版本4.0 alpha001(2016-6-14) 

为什么必学,他是一个IOC,也是目前很好的一个动态代理技术,实现AOP拦截。性能很好

下载下来:AY的百度盘下载:百度云


代理模式:我的文章


新建控制台,引入Castle.Core.dll文件

使用类ProxyGenerator


需要被改写的代码:

   public interface WaiMaiService
    {
         void SendToCustomer();
    }

    public class KFCBusiness : WaiMaiService
    {
        public  void SendToCustomer()
        {
            Console.WriteLine("KFC的外卖,派送了");
        }
    }

    public class QiShou_ZhangSan : WaiMaiService
    {
        KFCBusiness kfc;
        public QiShou_ZhangSan(KFCBusiness _kfc)
        {
            this.kfc = _kfc;
        }
        public override void SendToCustomer()
        {
            if (kfc != null)
            {
                kfc.SendToCustomer();
            }
        }
    }


开始吧:


    public interface WaiMaiService
    {
        void SendToCustomer();
    }

    public class KFCBusiness : WaiMaiService
    {
        public virtual void SendToCustomer()
        {
            Console.WriteLine("KFC的外卖,开始派送");
        }
    }

    public class KFC_Intercetor : IInterceptor
    {
        public void Intercept(IInvocation invocation)
        {
            BeforeExecute();
            invocation.Proceed();
            AfterExecute();
        }
        public void BeforeExecute()
        {
            Console.WriteLine("打开手机标记,开始送单...");
        }
        public void AfterExecute()
        {
            Console.WriteLine("打开手机标记已经送到客户手中了。");
        }
    }

在IOC中,肯定都是接口,然后实现一个接口,注意方法是virtual标记。

你可以实现一个IInterceptor拦截器,在代理任务执行前后进行额外的操作


客户端使用方式:

     static void Main(string[] args)
        {
            Console.WriteLine("kfc商家发布一个送餐任务");
            ProxyGenerator proxyGenerator = new ProxyGenerator();
            KFCBusiness proyLandlord = proxyGenerator.CreateClassProxy<KFCBusiness>(new KFC_Intercetor());
            Console.WriteLine("有骑手接受派单任务了");
            proyLandlord.SendToCustomer();
            Console.WriteLine("结束派送");
            //商家才不管这位骑手叫什么姓什么,他是个代理帮商家送的。这就是代理模式


            Console.ReadLine();
        }

效果图:

blob.png


这里商家完全不用知道 骑手的行为。这才是真正干净的代理模式啊

====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang=======请不要转载谢谢了。=========



推荐您阅读更多有关于“C#Castle.NET,”的文章

猜你喜欢

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  查看权限

抖音:wpfui 工作wpf,目前主maui

招聘合肥一枚WPF工程师,跟我一个开发组,10-15K,欢迎打扰

目前在合肥市企迈科技就职

AYUI8全源码 Github地址:前往获取

杨洋(AaronYang简称AY,安徽六安人)AY唯一QQ:875556003和AY交流

高中学历,2010年开始web开发,2015年1月17日开始学习WPF

声明:AYUI7个人与商用免费,源码可购买。部分DEMO不免费

不是从我处购买的ayui7源码,我不提供任何技术服务,如果你举报从哪里买的,我可以帮你转正为我的客户,并送demo

查看捐赠

AYUI7.X MVC教程 更新如下:

第一课 第二课 程序加密教程

标签列表