文档详情

WCF序列化与反序列化复杂类型精要.doc

发布:2017-06-09约2.51万字共18页下载文档
文本预览下载声明
WCF 序列化与反序列化复杂类型(DataContractSerializer) NET的类型可以分为两种:声明类型和真实类型。我们提倡面向接口的编程,对象的真实类型往往需要在运行时才能确定,在编程的时候往往只需要指明类型的声明类型,比如类型实现的接口或者抽象类。当我们使用基于接口或者抽象类创建的DataContractSerializer去序列化一个实现了该接口或者继承该抽象类的实例的时候,往往会因为对对象的真实类型无法识别造成不能正常地序列化。 现在,我们定义两个带数据协定的类——ActionInfo和ActionParameterInfo: [csharp] view plain copy 在CODE上查看代码片派生到我的代码片 /// summary /// 动作信息 /// /summary [DataContract(Namespace = /jiankunking)] [KnownType(GetKnowTypes)] //[KnownType(GetKnowTypesQuote)] public class ActionInfo { private string actionName; /// summary /// 动作名称 /// /summary [DataMember] public String ActionName { get { return actionName; } set { actionName = value; } } private string actionId; /// summary /// 动作唯一标识 /// /summary [DataMember] public String ActionId { get { return actionId; } set { actionId = value; } } private Dictionarystring, ActionParameterInfo actionParameters; /// summary /// 参数信息 /// /summary [DataMember] public Dictionarystring, ActionParameterInfo ActionParameters { get { if (actionParameters == null) { actionParameters = new Dictionarystring, ActionParameterInfo(); } return actionParameters; } set { actionParameters = value; } } static Type[] GetKnowTypes() { return new Type[] { typeof(Dictionarystring, ActionParameterInfo) }; } //[DataMember] //public object Quote; //static Type[] GetKnowTypesQuote() //{ // return new Type[] { typeof(Dictionarystring, int) }; //} } /// summary
显示全部
相似文档