DatacontractAttribute的使用规则
关于DatacontractAttribute的使用规则和说明,
DatacontractAttribute是序列化类的另一种方法,和XmlMemberAttribute(也就是XmlElementAttribute)使用比较像。它的命名空间是System.Runtime.Serialization。
不同点:
DatacontractAttribute,必须定义DataMember,否则不序列化该字段;XmlMemberAttribute,默认是XmlElement。
序列化方法不一样,DatacontractAttribute使用DataContractSerializer;另一个使用XmlSerializer。
代码如下,
定义DataContract类代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using System.Data;
using System.ServiceModel;
using System.Xml;
using System.Runtime.Serialization; namespace Artech.XmlSerializerDemos
{
[DataContract]
public class DataBase2
{
[DataMember(Order=)]
public Guid ID
{
get;
set;
} private DateTime _date;
[DataMember(Order=)]
public DateTime Date
{
get;
set;
} [DataMember(Order = )]
public string Customer
{
get;
set;
} [DataMember(Order = )]
public string ShipAddress
{
get;
set;
} [DataMember(Order = )]
public double TotalPrice
{
get;
set;
}
} public class Order2 : DataBase2
{
[DataMember(Order = )]
public string PaymentType
{
get;
set;
}
}
}
调用DataContract
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using System.Runtime.Serialization;
using System.Diagnostics; namespace Artech.XmlSerializerDemos
{
class Program
{
static void Main(string[] args)
{
#region DataContract
Order2 order = new Order2()
{
ID = Guid.NewGuid(),
Date = DateTime.Today,
Customer = "Foo",
ShipAddress = "airport address",
TotalPrice = ,
PaymentType = "credit card" };
Serialize<Order2>(order, @"E:\Order.xml");
#endregion #region xml Attribute
//Order order = new Order()
//{
// ID = Guid.NewGuid(),
// Date = DateTime.Today,
// Customer = "Foo",
// ShipAddress = "airport address" //};
//Serialize<Order>(order, @"E:\Order.xml");
#endregion } static void Serialize<T>(T instance, string fileName)
{
#region xml Attribute
//using (XmlWriter writer = new XmlTextWriter(fileName, Encoding.UTF8))
//{
// XmlSerializer serializer = new XmlSerializer(typeof(T));
// serializer.Serialize(writer, instance);
//}
#endregion #region xml datacontract
using (XmlWriter writer = new XmlTextWriter(fileName, Encoding.UTF8))
{
DataContractSerializer serializer = new DataContractSerializer(typeof(T));
serializer.WriteObject(writer, instance);
}
#endregion
Process.Start(fileName);
} }
}
DatacontractAttribute的使用规则的更多相关文章
- [C#] .NET Core/Standard 1.X 项目中如何使用XmlIgnoreAttribute等标准范围外的内容,兼谈如何解决“violation of security transparency rules failed”(违反安全透明规则失败)异常
作者: zyl910 一.缘由 XML序列化是一个很常用的功能,但对于.NET Core/Standard,其直到2.0版才内置支持XML序列化.具体来说, .NET Core 2.0 或 .NET ...
- Yii1.1的验证规则
在Yii1.1的数据验证是由CValidator完成,在CValidator中提供了各种基本的验证规则 <?php public static $builtInValidators=array( ...
- iOS之应用版本号的设置规则
版本号的格式:v<主版本号>.<副版本号>.<发布号> 版本号的初始值:v1.0.0 管理规则: 主版本号(Major version) 1. 产品的主体构件进 ...
- ThinkPhp5.0模型验证规则
Tp5提供了模型数据规则的验证功能,用于在数据save或者update前验证数据的有效性.Tp5提供校验规则的类为\Think\Validate,默认提供的校验规则可以查看该文件. 在Model文件中 ...
- PHP 面向对象编程和设计模式 (5/5) - PHP 命名空间的使用及名称解析规则
PHP高级程序设计 学习笔记 2014.06.12 命名空间概述 PHP 在 5.3.0 以后的版本开始支持命名空间.什么是命名空间?从广义上来说,命名空间是一种封装事物的方法.在很多地方都可以见到这 ...
- "Chinese_PRC_CI_AS" 和 "Chinese_PRC_90_CI_AI" 之间的排序规则冲突问题
这个错误真是太恶心了.不过有解决办法,你问我哪来的?当然百度的咯! 示例: select a.workTypeDes from A a,B b where a.workTypeCode=b.work ...
- mysql大小写敏感与校对规则
大家在使用mysql过程中,可能会遇到类似一下的问题: root@chuck 07:42:00>select * from test where c1 like 'ab%'; +-----+ ...
- Java 特定规则排序-LeetCode 179 Largest Number
Given a list of non negative integers, arrange them such that they form the largest number. For exam ...
- Scala化规则引擎
1. 引言 什么是规则引擎 一个业务规则包含一组条件和在此条件下执行的操作,它们表示业务规则应用程序的一段业务逻辑.业务规则通常应该由业务分析人员和策略管理者开发和修改,但有些复杂的业务规则也可以由技 ...
随机推荐
- 从coding.net 克隆(git clone)项目代码到本地报无权限(403)错误 解决方案
直接从coding.net (git clone)项目代码到本地时,会提示没有权限的错误,如下图: 解决方案:添加远程地址的时候带上用户名及密码即可解决,格式如下: git clone http:// ...
- Python学习笔记:logging(日志处理)
在一个软件中,日志是可以说必不可少的一个组成部分,通常会在定位客户问题或者记录软件使用情况等场景中会用到.logging模板块是Python的一个内置标准库,用于实现对日志的控制输出,对于平常的日志输 ...
- maven打包成jar
maven pom.xml中添加依赖 <build> <plugins> <plugin> <groupId>org.apache.maven.plug ...
- 关于我的Android 博客
我是曹新雨,我为自己代言.现在的菜鸟,3年以后我就是大神.为自己加油.微信:aycaoxinyu 关于我的Android博客,都是我当初遇到困难,克服之后,写上去的.后来,有人加我微信,问我一些问题, ...
- 调试bug 技巧
两天,一个小bug 我调试了两天,最终调试成功了.还是在别人的帮助下. 问题是刷新相关的.当用户登录了,其他的页面都要刷新.也就是加上一些参数. 但是有一个fragment一直加不上,其他挨着的两个都 ...
- 剑指Offer - 九度1523 - 从上往下打印二叉树
剑指Offer - 九度1523 - 从上往下打印二叉树2013-12-01 00:35 题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 输入: 输入可能包含多个测试样例,输入以E ...
- 《Cracking the Coding Interview》——第9章:递归和动态规划——题目11
2014-03-21 20:20 题目:给定一个只包含‘0’.‘1’.‘|’.‘&’.‘^’的布尔表达式,和一个期望的结果(0或者1).如果允许你用自由地给这个表达式加括号来控制运算的顺序,问 ...
- Python 3基础教程6-for循环语句
本文介绍另外一种循环语句,for循环,直接看例子. 用for实现打印1到9的数字. 方法一:写入一个列表,然后遍历列表 # 这里介绍 for循环# 打印1到9 exampleList = [1,2,3 ...
- Python学习4,字符串
字符串这个东西主要靠记,多打打就好了. _author_ = "Happyboy" name = "my \tname is happyboy and i am 66 y ...
- Opencv3.0.0安装包
这个资源是Opencv3.0.0安装包,包括Windows软件包,Android软件包,IOS软件包,还有opencv的源代码:需要的下载吧. 点击下载