• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > 动态代理的5模式使用示例和Mixin模式

动态代理的5模式使用示例和Mixin模式

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了sass mixin,react mixin,less mixin,vue mixin,python mixin等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

重量级的ORM和IOC产品离不开动态代理,作为开发人员,多数情况不用关注动态代理的内部实现机制,但是了解其一般的规律和模式还是有必要的,比如:虽然你开发期间采用了POCO,因为开启了动态代理,运行期间则不是POCO。本文简单描述了5种代理生成模式和1种Mixin模式,最后给出一个示例。

    public class Animal : IPlayable
    {
        public virtual void Play()
        {
            Console.WriteLine("Animal.Play");
        }
    }

    public class Dog : Animal
    {
        public override void Play()
        {
            Console.WriteLine("Dog.Play");
        }
    }

    public interface IRunable
    {
        void Run();
    }

    public class RunAbility : IRunable
    {
        public void Run()
        {
            Console.WriteLine("RunAbility.Run");
        }
    }

    public class AnimalInterceptor : IInterceptor
    {
        public void Intercept(IInvocation invocation)
        {
            Console.WriteLine("Before AnimalInterceptor.Intercept");
            if (invocation.InvocationTarget != null)
            {
                invocation.Proceed();
            }
            Console.WriteLine("After AnimalInterceptor.Intercept");
        }
    }
</div>

第一种:ClassProxy

                Console.WriteLine(animal.GetType());
                Console.WriteLine(animal.GetType().BaseType);

                var compositeField = animal.GetType().GetField("__target");
                Console.WriteLine(compositeField);

                foreach (var interfaceType in animal.GetType().GetInterfaces())
                {
                    Console.WriteLine(interfaceType);
                }
            }
</div>

第二种:ClassProxyWithTarget

                Console.WriteLine(animal.GetType());
                Console.WriteLine(animal.GetType().BaseType);

                var compositeField = animal.GetType().GetField("__target");
                Console.WriteLine(compositeField);

                foreach (var interfaceType in animal.GetType().GetInterfaces())
                {
                    Console.WriteLine(interfaceType);
                }
            }
</div>

第三种:InterfaceProxyWithoutTarget

         &

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 动态代理的5模式使用示例和Mixin模式

相关文章

  • 2017-05-11ASP.NET 字符串截取
  • 2017-05-11分享下Asp.Net面试题目及答案集合
  • 2017-05-11Asp.net实时显示文本框字数实现代码
  • 2017-05-11C#实现上传照片到物理路径,并且将地址保存到数据库的小例子
  • 2017-05-11.NET实现文件跨服务器上传下载的方法
  • 2017-05-11asp.net c# 抓取页面信息方法介绍
  • 2017-05-11ASP.NET生成二维码的方法总结
  • 2017-05-11Visual Studio 2017无法加载Visual Studio 2015创建的SharePoint解决方法
  • 2017-05-11.net开发人员常犯的错误分析小结
  • 2017-05-11使用AjaxPro.Net框架实现在客户端调用服务端的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 在GridView中LinkButton的属性的应用(如何不用选中就删除这一行)
    • asp.net中JavaScript数据验证实现代码
    • SQL为查询的结果加上序号(ROW_NUMBER) 合并多个查询结果
    • asp.net(C#)中上传大文件的几中常见应用方法
    • 页面编码codepage=936和65001的区别
    • 详解使用asp.net mvc部分视图渲染html
    • ASP.NET Core 2.1 使用Docker运行的方法步骤
    • asp.net中WebResponse 跨域访问实例代码
    • Visual Studio 2010 前端开发工具/扩展/插件推荐
    • 如何取得Repeater控件选择的项目及注意事项

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有