XmlSerializer - There was an error reflecting type

后端 未结 18 1632
借酒劲吻你
借酒劲吻你 2020-11-28 02:46

Using C# .NET 2.0, I have a composite data class that does have the [Serializable] attribute on it. I am creating an XMLSerializer class and passi

18条回答
  •  爱一瞬间的悲伤
    2020-11-28 03:35

    I too thought that the Serializable attribute had to be on the object but unless I'm being a complete noob (I am in the middle of a late night coding session) the following works from the SnippetCompiler:

    using System;
    using System.IO;
    using System.Xml;
    using System.Collections.Generic;
    using System.Xml.Serialization;
    
    public class Inner
    {
        private string _AnotherStringProperty;
        public string AnotherStringProperty 
        { 
          get { return _AnotherStringProperty; } 
          set { _AnotherStringProperty = value; } 
        }
    }
    
    public class DataClass
    {
        private string _StringProperty;
        public string StringProperty 
        { 
           get { return _StringProperty; } 
           set{ _StringProperty = value; } 
        }
    
        private Inner _InnerObject;
        public Inner InnerObject 
        { 
           get { return _InnerObject; } 
           set { _InnerObject = value; } 
        }
    }
    
    public class MyClass
    {
    
        public static void Main()
        {
            try
            {
                XmlSerializer serializer = new XmlSerializer(typeof(DataClass));
                TextWriter writer = new StreamWriter(@"c:\tmp\dataClass.xml");
                DataClass clazz = new DataClass();
                Inner inner = new Inner();
                inner.AnotherStringProperty = "Foo2";
                clazz.InnerObject = inner;
                clazz.StringProperty = "foo";
                serializer.Serialize(writer, clazz);
            }
            finally
            {
                Console.Write("Press any key to continue...");
                Console.ReadKey();
            }
        }
    
    }
    

    I would imagine that the XmlSerializer is using reflection over the public properties.

提交回复
热议问题