.NET 4.0的dynamic特性和协变特性应用一例
2012-02-28 14:18
441 查看
今天遇到了一个编码问题,很有意思
如果T1,T2,T3 都有相同的属性,而且处理这些属性的逻辑都一样,但他们之间没有关系,该怎么办?
答案如下:
如果T1,T2,T3之间有继承关系,完全可以写成代码如下:
如果T1,T2,T3 都有相同的属性,而且处理这些属性的逻辑都一样,但他们之间没有关系,该怎么办?
答案如下:
namespace ConsoleApplication2 { public class T1 { public string Name { get; set; } public int Count { get; set; } } public class T2 { public string Name { get; set; } public int Count { get; set; } } public class T3 { public string Name { get; set; } public int Count { get; set; } } public class Class1 { public void PrintName(dynamic t) { Console.WriteLine(t.Name); } public void PrintCount(IEnumerable<dynamic> list) { Console.WriteLine(list.Sum(t => t.Count)); } public void Test() { var t1 = new T1 { Name = "T1", Count = 1 }; var t2 = new T2 { Name = "T2", Count = 2 }; var t3 = new T3 { Name = "T3", Count = 3 }; PrintName(t1); PrintName(t2); PrintName(t3); var list1 = new List<T1> { t1 }; var list2 = new List<T2> { t2 }; var list3 = new List<T3> { t3 }; PrintCount(list1); PrintCount(list2); PrintCount(list3); } } }
如果T1,T2,T3之间有继承关系,完全可以写成代码如下:
public void PrintName<T>(T t) { Console.WriteLine(t.Name); } public void PrintCount<T>(List<T> list) { Console.WriteLine(list.Sum(t => t.Count)); }
相关文章推荐
- 精进不休 .NET 4.0 (4) - C# 4.0 新特性之命名参数和可选参数, 动态绑定(dynamic), 泛型协变和逆变, CountdownEvent, Barrier
- C# 4.0 新特性dynamic、可选参数、命名参数等 分类: .NET 2013-07-26 11:15 414人阅读 评论(0) 收藏
- 精进不休 .NET 4.0 (4) - C# 4.0 新特性之命名参数和可选参数, 动态绑定(dynamic), 泛型协变和逆变, CountdownEvent, Barrier
- 精进不休 .NET 4.0 (3) - asp.net 4.0 新特性之动态数据(Dynamic Data)增强, AJAX增强; IDE之Visual Studio 2010增强
- 精进不休 .NET 4.0 (3) - asp.net 4.0 新特性之动态数据(Dynamic Data)增强
- .net 4.0 中的特性总结(一):dynamic
- .Net 4.0新特性之Dynamic 动态类型(转载)
- 精进不休 .NET 4.0 (3) - asp.net 4.0 新特性之动态数据(Dynamic Data)增强, AJAX增强; IDE之Visual Studio 2010增强
- 精进不休 .NET 4.0 (4) - C# 4.0 新特性之命名参数和可选参数, 动态绑定(dynamic), 泛型协变和逆变, CountdownEvent, Barrier
- C#4.0 新特性, dynamic, 可选参数,协变与抗变 (转)
- .NET特性(Attribute)应用一例
- 详解.NET 4.0新特性Dynamic相关知识
- .net 4.0新特性-tuple
- .net 4.0应用体系框架的构造过程
- VS 2010 和 .NET 4.0 系列之《自动启动ASP.NET应用》篇
- .net 4.0 新特性 Linq 并行化处理
- C# 4.0新特性-"协变"与"逆变"以及背后的编程思想
- C# 4.0新特性dynamic作用浅析
- 深入C# 4.0 新特性dynamic、可选参数、命名参数的详细介绍
- .net 4.0 之后的协变与逆变