• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C# DuckTyping 类

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

为什么引入Duck Typing?

 

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();

           

 

        }      

}

 

运行结果:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# 调用C++ SDK/API的问题总结发布时间:2022-07-14
下一篇:
C&amp;C++中的qsort库函数发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap