How to serialize non-static child class of static class

前端 未结 3 1618
-上瘾入骨i
-上瘾入骨i 2021-01-04 12:10

I want to serialize a pretty ordinary class, but the catch is it\'s nested in a static class like this:

public static class StaticClass
{
    [Serializable]
         


        
3条回答
  •  青春惊慌失措
    2021-01-04 13:03

    It's know limitation in XmlSerializer ()

    And workaround is to use DataContractSerializer (DataContractAttribute + DataMemberAttribute)

    var ser = new DataContractSerializer(typeof (StaticClass.SomeType));
    var obj = new StaticClass.SomeType {Int = 2};
    ser.WriteObject(stream, obj);
    
    ...
    
    static class StaticClass
    {
        [DataContract]
        public class SomeType
        {
            [DataMember]
            public int Int { get; set; }
        }
    }
    

    As you can see DataContractSerializer doesn't even require StaticClass to be public. One difference is that you should use WriteObject' andReadObject' instead Serialize and Deserialize

提交回复
热议问题