关于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的使用规则的更多相关文章

  1. [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 ...

  2. Yii1.1的验证规则

    在Yii1.1的数据验证是由CValidator完成,在CValidator中提供了各种基本的验证规则 <?php public static $builtInValidators=array( ...

  3. iOS之应用版本号的设置规则

    版本号的格式:v<主版本号>.<副版本号>.<发布号>  版本号的初始值:v1.0.0 管理规则: 主版本号(Major version) 1.  产品的主体构件进 ...

  4. ThinkPhp5.0模型验证规则

    Tp5提供了模型数据规则的验证功能,用于在数据save或者update前验证数据的有效性.Tp5提供校验规则的类为\Think\Validate,默认提供的校验规则可以查看该文件. 在Model文件中 ...

  5. PHP 面向对象编程和设计模式 (5/5) - PHP 命名空间的使用及名称解析规则

    PHP高级程序设计 学习笔记 2014.06.12 命名空间概述 PHP 在 5.3.0 以后的版本开始支持命名空间.什么是命名空间?从广义上来说,命名空间是一种封装事物的方法.在很多地方都可以见到这 ...

  6. "Chinese_PRC_CI_AS" 和 "Chinese_PRC_90_CI_AI" 之间的排序规则冲突问题

    这个错误真是太恶心了.不过有解决办法,你问我哪来的?当然百度的咯! 示例: select a.workTypeDes from A a,B b  where a.workTypeCode=b.work ...

  7. mysql大小写敏感与校对规则

    大家在使用mysql过程中,可能会遇到类似一下的问题: root@chuck 07:42:00>select * from test where c1 like 'ab%';  +-----+  ...

  8. Java 特定规则排序-LeetCode 179 Largest Number

    Given a list of non negative integers, arrange them such that they form the largest number. For exam ...

  9. Scala化规则引擎

    1. 引言 什么是规则引擎 一个业务规则包含一组条件和在此条件下执行的操作,它们表示业务规则应用程序的一段业务逻辑.业务规则通常应该由业务分析人员和策略管理者开发和修改,但有些复杂的业务规则也可以由技 ...

随机推荐

  1. 【转载】最长回文字符串(manacher算法)

    原文转载自:http://blog.csdn.net/lsjseu/article/details/9990539 偶然看见了人家的博客发现这么一个问题,研究了一下午, 才发现其中的奥妙.Stupid ...

  2. iOS-UICollectionViewController 介绍

    废话不多说,列几个列子 (几种情况下的做法): 情景一: 介绍:1. 在UIViewController 上加 UICollectionView (用代码 创建 UICollectionView). ...

  3. 删除警告的方法 python

    import warningswarnings.filterwarnings('ignore')

  4. 笔记-DB-mongodb-常用操作-1

    笔记-DB-mongodb-常用操作-1 1.  启动及连接 1.1.  启动 启动mongod windows下: 1.   如已添加服务 net start <service name> ...

  5. IDA 对 so 的动态调试

    将IDAPro根目录下dbgsrv 目录下的android_server(模拟器用android_x86_server,这里还是用真机好点)文件push 到安卓设备(比如/data/local/tmp ...

  6. 7,Flask 中路由系统

    Flask中的路由系统 @app.route("/",methods=["GET","POST"]) 为什么要这么用?其中的工作原理我们知道 ...

  7. 4525: [Cerc2012]Kingdoms

    4525: [Cerc2012]Kingdoms 题意 n个国家,两两之间可能存在欠债或者被欠债的关系,一个国家破产:其支出大于收入.问一个国家能否坚持到最后. 思路 很有意思的一道题. dp[s]表 ...

  8. Python的类(一)

    类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类中且在函数体之外. ...

  9. web.py上传文件并解压

    有个需求是从php端上传zip文件到python端并且解压到指定目录,以下是解决方法 1.python端,使用的web.py def POST(self): post_data = web.input ...

  10. 剑指Offer - 九度1508 - 把字符串转换成整数

    剑指Offer - 九度1508 - 把字符串转换成整数2014-02-06 23:46 题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 输入: 输入可能包含多个测试样例 ...