在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
为什么引入Duck Typing?
ADuck,BDuck,XDuck…………. 为linq 映射的n张数据库表,表名称不同,字段结构完全相同。 如何实现只用一个Display方法,依据传入不同的实体,就能自动显示实体的信息。而且Display方法中可以通过强类型访问实体的成员。 思路:如果有如下继承结构的话,就可以实现上述要求。 现实问题是,不能更改ADuck,BDuck,XDuck的继承类。/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();
} }
运行结果: |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论