zoukankan      html  css  js  c++  java
  • C# DuckTyping 类

    为什么引入Duck Typing?

    QQ截图未命名.jpg

    ADuck,BDuck,XDuck…………. linq 映射的n张数据库表,表名称不同,字段结构完全相同。

    如何实现只用一个Display方法,依据传入不同的实体,就能自动显示实体的信息。而且Display方法中可以通过强类型访问实体的成员。

    思路:如果有如下继承结构的话,就可以实现上述要求。


    现实问题是,不能更改ADuck,BDuckXDuck的继承类。/Files/hbb0b0/DuckApp.rar

     

     

    如果能把对ADuck,BDuck,XDuck的操作动态转化成IDuck接口,公用方法只是对IDuck方法的操作,也可以实现上述要求。

     

    DuckType类具有把相同结构的类,但不继承统一接口的类型转成统一接口的类型的功能。

    具体实现代码

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using NDuck;

    using System.ComponentModel;

    using System.Reflection;

    namespace DuckApp

    {

     

     /// <summary>

        /// 定义动态转换接口

        /// </summary>

       public interface IDuck

        {

            string Name

            {

                get;

                set;

            }

     

            long ID

            {

                get;

                set;

            }

        }

     

      

        class Program

        {

     

     

            static void DisplayDuck(object a)

            {

     

                ///转换

                IDuck duck = DuckTyping.Implement<IDuck>(a);

     

                Console.WriteLine(string.Format("ID:{0} Name:{1}", duck.ID.ToString(), duck.Name));

     

            }

     

     

            static void Main(string[] args)

            {

                ADuck a = new ADuck() { Name = "A" + DateTime.Now.ToString() };

              

                BDuck b = new BDuck() { Name = "B" + DateTime.Now.ToString() };

     

     

                DisplayDuck(a);

                DisplayDuck(b);

              

                Console.Read();

               

     

            }      

    }

    运行结果:

    console.jpg

  • 相关阅读:
    linux cut的用法
    删除表的语句(drop truncate delete)
    mysql中的模糊查询
    linux之软连接 硬链接 link ln
    使用robot合并Robot Framework测试报告
    Python中的字典
    python logger 动态设置日志名
    K8S(Kubernetes)学习笔记
    [转]CURL常用命令
    python网站目录扫描器2.0版
  • 原文地址:https://www.cnblogs.com/hbb0b0/p/1450949.html
Copyright © 2011-2022 走看看