XmlSerializer Throwing Exception "System.InvalidOperationException"

I am trying to set list data in xml format. I have complex objects

class user information that contains a list of another class object

[Serializable]
class UserInfo : Address
{
    [XmlElement("Firstname")]
    public  String firstname { get; set; }
    [XmlElement("Surname")]
    public String surname { get; set; }
    [XmlArray("Addresses")]
   // [XmlArrayItem("Address",typeof(Address))]
    public List<Address> addressesL { get; set;}
}

An address class has only one row field

  class Address
{

[XmlElement("Address")]
   public String saddress { get; set; }
}

here is the main

static void Main(string[] args)
    {



        UserInfo user = new UserInfo();
        Address adres = new Address();
        List<Address> adresl = new List<Address>();
        List<UserInfo> userlist = new List<UserInfo>();
        user.firstname = "Mustafa";
        user.surname = "Alqanbar";

        adres.saddress = "Saudi Arabia";
        adresl.Add(adres);

        adres = new Address();
        adres.saddress = "Australia";
        adresl.Add(adres);

        user.addressesL = adresl;


        userlist.Add(user);

        for (int i = 0; i < userlist.Count; i++)
        {
            Console.Write("{0} {1}  ",userlist[i].firstname, userlist[i].surname);
            for (int j = 0; j < userlist[i].addressesL.Count; j++) 
            {
                Console.Write("{0} ",userlist[i].addressesL[j].saddress);
            }
            Console.WriteLine();
        }
        XmlSerializer ser = new XmlSerializer((typeof(List<UserInfo>)));
       // XmlSerializer deser = XmlSerializer.FromTypes(new[] { (typeof(List<UserInfo>)) })[0];


            using (TextWriter writer = new StreamWriter(@"c:\x.xml"))
            {
                ser.Serialize(writer, user);
            }


            Console.ReadKey();
    }

I read a few posts in a stack overflow, but I could not sort my problem.

+4
source share
2 answers

As I understand it, the class that needs to be written and read XmlSerializermust be declared publicin its namespace; at least in this example , it is.

+3
source

XmlSerializer ser = new XmlSerializer((typeof(List<UserInfo>))); XmlSerializer ser = new XmlSerializer(typeof(UserInfo));, .

public

0

Source: https://habr.com/ru/post/1610384/


All Articles