专业建站公司前景,合肥企业网站建设哪个好,如何选择坪山网站建设,在网站上做封面在上一章节《WCF可序列化方式》 提到了NetDataContractSerializer 适用于客户端与服务端共享类型信息#xff0c;支持支持类型不变性。 但并没有提供现成的特性#xff0c;所以无法使用对数据契约进行标记的方式来达到使用NetDataContractSerializer的目的#xff0c;必须通… 在上一章节《WCF可序列化方式》 提到了NetDataContractSerializer 适用于客户端与服务端共享类型信息支持支持类型不变性。 但并没有提供现成的特性所以无法使用对数据契约进行标记的方式来达到使用NetDataContractSerializer的目的必须通过自定制开发才能对操作契约进行标注。 1. NetDataContractFormatAttribute特性 public class NetDataContractFormatAttribute : Attribute, IOperationBehavior{public void AddBindingParameters(OperationDescription operationDescription, BindingParameterCollection bindingParameters){}public void ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation){ReplaceDataContractSerializerOperationBehavior(operationDescription);}public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation){ReplaceDataContractSerializerOperationBehavior(operationDescription);}public void Validate(OperationDescription operationDescription){}public static void ReplaceDataContractSerializerOperationBehavior(OperationDescription description){DataContractSerializerOperationBehavior dcs description.Behaviors.FindDataContractSerializerOperationBehavior();if (dcs ! null){description.Behaviors.Remove(dcs);}description.Behaviors.Add(new NetDataContractSerializerOperationBehavior(description));}} 2. NetDataContractSerializerOperationBehavior 行为 public class NetDataContractSerializerOperationBehavior : DataContractSerializerOperationBehavior{private static NetDataContractSerializer serializer new NetDataContractSerializer();public NetDataContractSerializerOperationBehavior(OperationDescription operationDescription): base(operationDescription){}public override XmlObjectSerializer CreateSerializer(Type type, string name, string ns, IListType knownTypes){return NetDataContractSerializerOperationBehavior.serializer;}public override XmlObjectSerializer CreateSerializer(Type type, XmlDictionaryString name, XmlDictionaryString ns, IListType knownTypes){return NetDataContractSerializerOperationBehavior.serializer;}} 3. 将特性标记在契约中 [ServiceContract(CallbackContract typeof(IStockServiceCallback))]public interface IStockService{ [OperationContract]double GetPrice(string ticker);[OperationContract(IsOneWay true)]void RegisterForUpdate(string ticker);[OperationContract][NetDataContractFormat]StockPrice GetStockPrice(string ticker);} 转载于:https://www.cnblogs.com/jerryshi/archive/2011/10/23/2221679.html