zoukankan      html  css  js  c++  java
  • Custom DataContractSerializerOperationBehavior

    public class MySerializerFormatAttribute : Attribute, IOperationBehavior 
       
    { 
         
    public void AddBindingParameters(OperationDescription description, BindingParameterCollection parameters) 
         
    { 
         
    } 
     
         
    public void Validate(OperationDescription description) 
         
    { 
         
    } 
     
         
    private static void ReplaceBehavior(OperationDescription description) 
         
    { 
             
    DataContractSerializerOperationBehavior dcsOperationBehavior = description.Behaviors.Find<DataContractSerializerOperationBehavior>(); 
             
    if (dcsOperationBehavior != null) 
             
    { 
               
    int idx = description.Behaviors.IndexOf(dcsOperationBehavior); 
                description
    .Behaviors.Remove(dcsOperationBehavior); 
                description
    .Behaviors.Insert(idx, new MyBehavior(description)); 
             
    } 
         
    } 
     
         
    public void ApplyClientBehavior(OperationDescription description, ClientOperation proxy) 
         
    { 
             
    ReplaceBehavior(description); 
         
    } 
     
     
         
    public void ApplyDispatchBehavior(OperationDescription description, DispatchOperation dispatch) 
         
    { 
             
    ReplaceBehavior(description); 
         
    } 
       
    }; 
     
       
    public class MySerializer : XmlObjectSerializer 
       
    { 
         
    public override bool IsStartObject(XmlDictionaryReader reader) 
         
    { 
             
    throw new NotImplementedException(); 
         
    } 
     
         
    public override object ReadObject(XmlDictionaryReader reader, bool verifyObjectName) 
         
    { 
             
    throw new NotImplementedException(); 
         
    } 
     
         
    public override void WriteEndObject(XmlDictionaryWriter writer) 
         
    { 
             
    throw new NotImplementedException(); 
         
    } 
     
         
    public override void WriteObjectContent(XmlDictionaryWriter writer, object graph) 
         
    { 
             
    throw new NotImplementedException(); 
         
    } 
     
         
    public override void WriteStartObject(XmlDictionaryWriter writer, object graph) 
         
    { 
             
    throw new NotImplementedException(); 
         
    } 
       
    } 
     
       
    // Custom Web service behaviour that passes custom serializer 
       
    public class MyBehavior : DataContractSerializerOperationBehavior 
       
    { 
         
    private static MySerializer serializer = new MySerializer(); 
     
         
    public MyBehavior(OperationDescription operationDescription) : base(operationDescription)  
         
    {  
         
    } 
     
         
    public override XmlObjectSerializer CreateSerializer(Type type, string name, string ns, IList<Type> knownTypes) 
         
    { 
             
    return MyBehavior.serializer; 
         
    } 
     
         
    public override XmlObjectSerializer CreateSerializer(Type type, XmlDictionaryString name, XmlDictionaryString ns, IList<Type> knownTypes) 
         
    { 
             
    return MyBehavior.serializer; 
         
    } 
       
    } 

  • 相关阅读:
    day02_05.除数与被除数
    day02_04.算算多少人
    day02_03.五个数字一行输出
    day02_02.能被3整除的个位数为6的数
    day02_01.能被3整除的数
    day05_10 作业
    day05_09 列表内置方法
    day05_08 列表讲解、切片、内置方法
    day05_07 标志位讲解
    day05_06 continue语句、while循环
  • 原文地址:https://www.cnblogs.com/mxy1028/p/1940342.html
Copyright © 2011-2022 走看看