标黄段代码:
XmlSerializer serializer = new XmlSerializer(ctb.GetType(), new Type[] {CustomerClass});  

解决方案 »

  1.   

    ClassToBeSerialize.AType本身的类型是一个RuntimeType,typeof(CustomerClass)只是它的值。
    不幸的是RuntimeType是一个内部的类,不被XmlSerializer认可。倒是可以传输类型的全名,只是麻烦些,要手工做Xml系列化:
    [Serializable] 
    public class ClassToBeSerialize : IXmlSerializable

        public Type AType  {set;get;}    //--------------------------------------------------------
        public System.Xml.Schema.XmlSchema GetSchema()
        {
            return null;
        }
        public void ReadXml(XmlReader reader)
        {
            if( reader.Read() && reader.IsStartElement("AType") )
            {
                string typeName = reader.ReadString();
                this.AType = Type.GetType(typeName);
            }
        }
        public void WriteXml(XmlWriter writer)
        {
            writer.WriteElementString("AType", this.AType == null ? "" : this.AType.FullName);
        }
        //-------------------------------------------------------

    如果你怕麻烦,则可以保存类型的全名,而不是类型本身(类型可以由全名来重构):
    public class ClassToBeSerialize 

      public string ATypeName {set;get;}