刚参加完上司的婚礼,感觉很不错,,婚礼现场像童话一般,,不知道是不是很多女生都憧憬着这样的一天    

还是记录一下,学习所得

数据契约

首先是数据契约,可能包括有[DataContract] [DataMember] ,甚至各样的操作,

其次就是已知类型,[ServiceKnownType] [KnownType] 比较简单不是这篇的重点

泛型数据类型

然后就是

在.NET Framework 2.0中,泛型第一次被引入。我们可以定义泛型接口、泛型类型、泛型委托和泛型方法。序列化依赖于真实具体的类型,而泛型则刻意模糊了具体类型概念。而集合代表一组对象的组合,集合具有可迭代(Enumerable)的特性,可以通过某个迭代规则遍历集合中的每一个元素。范型类型和集合类型在序列化和反序列化上具有一些特殊的行为和规则,我们继续下去

1. 首先定义泛型中需要的数据契约

1
2
3
4
5
6
[DataContract]
public class Student
{
    [DataMember]
    public string Name {getset;}
}   //... 可能还有其他类型

2. 定义泛型类型

1
2
3
4
5
6
[DataContract]
public class School<Student>
{
     [DataMember]
     public Student stu {getset;}
}

3. 实例化这个泛型对象

略...

4. 序列化泛型对象

Serialize<School<Student>>(实例化后的泛型对象, @"school.xml");

之后我们会发现 SchoolOfStudentjOfvLqKh 开头的XML节点,让人匪夷所思,仔细发现

会发现它的组成结构是这样的:{类型名称(School)}+ Of + {范型参数的类型(Student)} }+ {哈希值(jOfvLqKh)}

就算我们修改数据契约的名称会发现哈希散列值依旧没有任何变化,其实这是ms为了防止命名冲突而为,

切记不要在2步骤将name设死,不过我们可以这样做 DataContract(Name="SchoolOf{0}{#}")]

这样元数据发布时我们就可以使用到属于自己定义的泛型类型了..

集合数据类型

在.NET中,所有的集合都实现了IEnumerable接口,比如Array、Hashtable、ArrayList

定义与服务端使用就略过了,,

关键要记住 DataContractSerializer对于IEnumerable<T>、Array与IList<T>序列化的结果XML是完全一致的,根节点的名称以ArrayOf为前缀,后面紧跟集合元素类型对应的数据契约名称,那么我们的客户端在使用时都是Student[],这可怎么办?

这个时候千万不要忘记了我们身边的"神器"IDE了

这样我们就可以在客户端舒舒服服的用这样的类型了,当然其他的一些在客户端生成object[]的,就需要已知类型的参与了  

最后就是自定义集合类型了

[CollectionDataContract],

注意三点

1,集合必须是可序列化的,

2 这个可不是我们SOA中的DataContract了,

3 要有Add方法的支持

本文转自My_King1 51CTO博客,原文链接:http://blog.51cto.com/apprentice/1360556,如需转载请自行联系原作者

WCF笔记--泛型与集合数据类型相关推荐

  1. Java实用教程笔记 泛型与集合框架

    泛型与集合框架 Generics 链表 LinkedList < E >泛型类 接口回调 常用方法 LinkedList< E >泛型类实现Link< E >泛型接 ...

  2. SCJP笔记_章七_泛型与集合

    第七章 泛型与集合 7.1 重写hashCode()和equals()方法 考试目标6.2 区分hashCode()和equals()方法的正确设计和错误设计,并解释 == 和equals()方法的不 ...

  3. sqlite工具类 java_Java之泛型、集合工具类

    集合工具类 在我们讲完常用的基本集合后,我们就要介绍下位于java.util包下的collections类,注意:我们之前的collection是集合的接口,而collections是一个类.coll ...

  4. .net core精彩实例分享 -- 泛型和集合

    文章目录 介绍 具体案例 限制泛型参数只能使用值类型 泛型参数的输入和输出 将抽象类作为类型约束 使用Span提升处理字符串的性能 多个Task同时操作ConcurrenBag集合 跨线程访问Bloc ...

  5. Java集合之Collection集合、泛型 【集合综合案例:赌神、赌侠、赌神斗地主】

    第一章. Collection集合 1.1 集合概述 集合:集合是java中提供的一种容器,可以用来存储多个数据. 集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的.集合的长度是可变的. ...

  6. 尚硅谷大数据技术Scala教程-笔记04【集合】

    视频地址:尚硅谷大数据技术之Scala入门到精通教程(小白快速上手scala)_哔哩哔哩_bilibili 尚硅谷大数据技术Scala教程-笔记01[Scala课程简介.Scala入门.变量和数据类型 ...

  7. 2021-6-15 异常 枚举 泛型 IO 集合 注解

    1.异常 (1) 数组越界异常 public class Test{public static void main(String [] args){String[] strs = new String ...

  8. 01.08学习Java的day18【泛型与集合】

    day18[泛型] 主要内容 泛型 Collection集合 学习目标 能够使用泛型定义类.接口.方法 能够理解泛型上限 能够阐述泛型通配符的作用 能够识别通配符的上下限 能够熟练使用Collecti ...

  9. (10)Java泛型-Map集合-集合框架工具类-可变参数-静态导入

    -- 部分1.5新特性Java泛型-Map集合-集合框架工具类 泛型 概述: JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制. 对于泛型可以这样理解: 没有使用泛型时,只要是对 ...

  10. Oracle集合数据类型的比较

    转自:http://database.114study.com/datum_show633615758613583008 PL/SQL中没有数组的概念,他的集合数据类型和数组是相似的.在7.3以前的版 ...

最新文章

  1. [转]25个增强iOS应用程序性能的提示和技巧
  2. js或css文件后面的参数是什么意思?
  3. LeetCode 61旋转链表-中等
  4. python为什么没有指针_Python中有指针吗?
  5. (49)FPGA面试题2-4译码器实现
  6. Vue2.0 新手入门 — 从环境搭建到发布
  7. HEXO Nunjucks Error
  8. setInterval 和 setTimeout
  9. 我的世界基岩版种子和java版种子_我的世界:当前基岩版最强村庄神种,村庄下面集合所有要素...
  10. python爬取国内代理ip_python爬虫实战:爬取西刺代理的代理ip(二)
  11. gg 修改器游戏被保护_2.游戏so防封的制作思路
  12. java中HashMap与Hash表详解
  13. 盲源分离(BSS)的学习总结(PCA、ICA)
  14. 外星人m15键盘灯光设置_机·教学贴:ALIENWARE m15的音效设置还能怎样玩?
  15. java程序 联机方法_Java实现Tank大战联机版
  16. unity中AO、metallic、roughness贴图的使用方式
  17. 迷宫寻宝(一) 82
  18. 李小龙:超人是这样练成的
  19. [转]华为公司员工待遇全面揭秘
  20. 程序员考公指南(逃离996的最强后路!!!)

热门文章

  1. 前端之JQuery:JQuery属性操作
  2. memcached系列之二
  3. 实现一个进度条的打印
  4. Django项目实战之用户头像上传与访问
  5. Django 【第十四篇】信号
  6. mysql添加一个字段(
  7. const char * char * const
  8. Ubuntu 14.04 开机手动开启numlock led
  9. 实体与表映射关系XXX.hbm.xml配置详解(转)
  10. 转载--Defunct僵尸进程