zoukankan      html  css  js  c++  java
  • 替换WCF默认序列化方式

    创建类 :

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.ServiceModel.Description;

    using System.Xml;

    using System.Runtime.Serialization;

    namespace Kingge.Mini.Network

    {

    public class NetDataContractSerializerOperationBehavior:DataContractSerializerOperationBehavior

    {

            public NetDataContractSerializerOperationBehavior(OperationDescription operationDescription)

                : base(operationDescription)

            {

            }

            public override XmlObjectSerializer CreateSerializer(Type type, string name, string ns, IList<Type> knownTypes)

            {

                return new NetDataContractSerializer(name,ns);

            }

            public override XmlObjectSerializer CreateSerializer(Type type, XmlDictionaryString name, XmlDictionaryString ns, IList<Type> knownTypes)

            {

                return new NetDataContractSerializer(name, ns);

            }

        }

    }

    客户端:

                using (ChannelFactory<T> factory = new ChannelFactory<T>(binding,adress))

                {

                    foreach (OperationDescription op in factory.Endpoint.Contract.Operations)

                    {

                        op.Behaviors.Remove<DataContractSerializerOperationBehavior>();

                        op.Behaviors.Add(new NetDataContractSerializerOperationBehavior(op));

                    }

                    ...... // do something

                }

    服务端:

                using (ServiceHost host = new ServiceHost(obj))

                {

                    foreach (ServiceEndpoint ep in host.Description.Endpoints)

                    {

                        foreach (OperationDescription op in ep.Contract.Operations)

                        {

                            op.Behaviors.Remove<DataContractSerializerOperationBehavior>();

                            op.Behaviors.Add(new NetDataContractSerializerOperationBehavior(op));

                        }

                    }

                    host.Open();

                    Console.Read();

                }

    好处提高了序列化能力(例如如此可以序列化Type类型),缺点降低了数据接口的松耦合性.

  • 相关阅读:
    最近正在计划编写一个麻将游戏
    连连看.NET v1.2版下载
    C#中使用指针转换数据类型[C#/unsafe]
    转载: 中国大部分程序员的通病
    C#休闲作品【连连看】开发心得与作品下载
    "连连看"算法笔记
    一个新游戏的思路;大家来说说看,觉得好的话,我做成游戏
    一个新游戏完成情况
    游戏演示(包含源码)[名称待定]
    Mzone 2.0换卡记
  • 原文地址:https://www.cnblogs.com/kingge/p/1983573.html
Copyright © 2011-2022 走看看