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; 
         
    } 
       
    } 

  • 相关阅读:
    BZOJ2456
    BZOJ2648
    POJ1639
    LOJ6003
    LOJ6002
    LOJ6001
    LOJ116
    POJ2594
    BZOJ4554
    JS事件 加载事件(onload)注意:1. 加载页面时,触发onload事件,事件写在<body>标签内。 2. 此节的加载页面,可理解为打开一个新页面时。
  • 原文地址:https://www.cnblogs.com/mxy1028/p/1940342.html
Copyright © 2011-2022 走看看