我有一个类,里面有的成员是hashtable,我知道hashtable不能xml序列化,所以我在序列化之前吧他转移到arraylist里面去了,然后我在hashtable的对象上面加上了[Nonserialized]。
结果,序列化的时候依然提示我这个对象不能序列化,错误的原因还是说不能序列化这个hashtable,我明明加了一行要他不序列化呀,怎么还是这样?
请问这个问题怎么解决?
谢谢了

解决方案 »

  1.   

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Collections;namespace Tools
    {
        public class NoSortHashtable : Hashtable
        {
            private ArrayList keys = new ArrayList();
            public NoSortHashtable()
            {
            }
            public override void Add(object key, object value)
            {
                base.Add(key, value);
                keys.Add(key);
            }
            public override ICollection Keys
            {
                get
                {
                    return keys;
                }
            }
            public override void Clear()
            {
                base.Clear();
                keys.Clear();
            }
            public override void Remove(object key)
            {
                base.Remove(key);
                keys.Remove(key);
            }
            public override IDictionaryEnumerator GetEnumerator()
            {
                return base.GetEnumerator();
            }
        }
    }
      

  2.   

    凡是涉及到Hashtable的属性,都加[Nonserialized]
      

  3.   

    http://www.techrepublic.com/blog/howdoi/how-do-i-serialize-a-hash-table-in-c-when-the-application-requires-it/143
      

  4.   

    已经解决了
    就是xml序列化要忽略的时候不是用【Nonserialized】而是用【XmlIgnore】
    还有,就是xml仅序列化共有成员和非只读属性。
    还有如果你的类里面包含了其他你自己定义的类在之前要加上[XmlInclude(typeof(你的类型))]
    以上是我遇到的问题,希望对大家有帮助