要么自己实现IXmlSerializable,要么给worker定义一个属性专门用来序列化。
这种需求比较奇怪,最好再考虑下是否合理。

解决方案 »

  1.   


            private Transaction (SerializationInfo info, StreamingContext context)
                : base(info, context)
            {
                ID = info.GetString("ID");
                worker= info.GetString("worker");//试下这个能得到什么
            }
      

  2.   

    例子: string xml = @"<Transaction><ID>Job89</ID><worker><Name>jack</Name><sex>male</sex></worker></Transaction>";
                byte []data = Encoding.Default.GetBytes(xml);
                Stream stream = new MemoryStream(data);
                XmlReader reader = XmlReader.Create(stream);
                XmlSerializer xs = new XmlSerializer(typeof(Transaction));
                Transaction transaction = xs.Deserialize(reader) as Transaction;
                stream.Dispose();
    类:[XmlRootAttribute(ElementName = "Transaction")] 
        public class Transaction :  IXmlSerializable
        {
            private string _id;
            private string _woker;        public string ID
            {
                get { return _id; }
                set { _id = value; }
            }        public string Woker
            {
                get { return _woker; }
                set { _woker = value; }
            }        public Transaction() { }        public Transaction(string id, string woker)
            {
                _id = id;
                _woker = woker;
            }        #region IXmlSerializable 成员        System.Xml.Schema.XmlSchema IXmlSerializable.GetSchema()
            {
                return null;
            }        void IXmlSerializable.ReadXml(XmlReader reader)
            {
                reader.ReadStartElement();
                _id = reader.ReadString();
                reader.ReadEndElement();
                _woker = reader.ReadOuterXml();
            }        void IXmlSerializable.WriteXml(XmlWriter writer)
            {
                //throw new Exception("The method or operation is not implemented.");
            }        #endregion
        }