none
WCF中,循环引用问题 RRS feed

  • 问题

  • WCF初学者请教下问题,感谢大家帮忙!

    情况:有class A 和 B

    [Serializable]
    public class A
    {
        IList<B> _bList;
    
        [XmlIgnore]
        public IList<B> BList
        {
            get {return _bList;}
            set {_bList = value;}
        }
    }
    
    [Serializable]
    public class B
    {
        A _aProperty;
    
        public A AProperty
        {
            get {return _aProperty;}
            set {_aProperty= value;}
        }
    }

    此时,class A 和 B 是循环引用关系,并且WCF会使用默认的DataContractSerializer

    但是,DataContractSerializer默认不支持循环引用的序列化

    目前查到有2个方法可以解决:

    1.在class A上使用[DataContract(IsReference=true)](DataContract这个Attribute不能与Serializable一起使用吧)

    2.使用DataContractSerializer的preserveObjectReferences参数

    我的问题是:

    我的项目中,像A和B这样的class还有很多,并且不想删掉Serializable这个Attribute

    这两种方式都需要在类(.cs文件)中处理,也就是说,需要一个class一个class的修改,很麻烦

    有没有什么方式,可以在配置文件中实现的?

    谢谢各位了!

    2012年2月16日 0:24

答案

全部回复