Click here to Skip to main content
15,891,976 members
Please Sign up or sign in to vote.
4.67/5 (2 votes)
See more:
While generating XML file for Custom class, I am getting Object set to Null reference in the following line:

vlist.Visibility.Add(new Visibility() { ListOrder = 2, DisplayName = "Name", Name = v.Name });


Can anybody tell me what am I doing wrong and how to correct it?

Following is my whole code :

#region
class Program
{
    static void Main(string[] args)
    {
        #region list GEnerateion
        Visibilities vlist = new Visibilities();
        Visibility v = new Visibility();
        v.Name = new FullName();
        vlist.AppName = "Test2";
        v.Name.FirstName = "First Name";
        v.Name.MiddleName = "Middle Name";
        v.Name.LastName = "Last Name";
        vlist.Visibility.Add(new Visibility() { ListOrder = 2, DisplayName = "Name", Name = v.Name });
        File.WriteAllText("Test1.xml", vlist.ToString());
        #endregion
    }
}
#endregion

#region
[Serializable]
public class FullName
{
    private String strFirstName;
    [XmlAttribute("FirstName")]
    public String FirstName
    {
        get { return strFirstName; }
        set { strFirstName = value; }
    }

    private String strMiddleName;
    [XmlAttribute("MiddleName")]
    public String MiddleName
    {
        get { return strMiddleName; }
        set { strMiddleName = value; }
    }

    private String strLastName;
    [XmlAttribute("LastName")]
    public String LastName
    {
        get { return strLastName; }
        set { strLastName = value; }
    }

}
#endregion

#region Visibility
[Serializable]
public class Visibility
{
    [XmlElement("Name")]
    public FullName Name { get; set; }

    [XmlAttribute("DisplayName")]
    public String DisplayName { get; set; }

    [XmlAttribute("ListOrder")]
    public int ListOrder { get; set; }
}
#endregion

#region Visibilities
[Serializable]
public class Visibilities
{
    [XmlAttribute("AppName")]
    public String AppName { get; set; }

    [XmlElement("Visibility")]
    public List<Visibility> Visibility { get; set; }

    #region
    public override string ToString()
    {
        string l_strXML = string.Empty;

        XmlSerializer Xml = new System.Xml.Serialization.XmlSerializer(GetType());
        MemoryStream ms = new MemoryStream();
        Xml.Serialize(ms, this);

        Byte[] Buffer = new byte[ms.Length];
        ms.Seek(0, 0);
        ms.Read(Buffer, 0, (int)ms.Length);

        l_strXML = System.Text.Encoding.ASCII.GetString(Buffer, 0, (int)ms.Length);

        return l_strXML;
    }
    #endregion
}
#endregion
Posted

1 solution

Hi Pratik,

Check the below modified code. Issue resolved. FOr any queries plz let me know...


namespace Client.ConsoleX
{
    
    public class Program
    {
        MainServiceClient mainServiceClient = new MainServiceClient();
        public static void Main()
        {
            #region list GEnerateion
            Visibilities vlist = new Visibilities();
            Visibility v = new Visibility();
            v.Name = new FullName();
            vlist.AppName = "Test2";
            v.Name.FirstName = "First Name";
            v.Name.MiddleName = "Middle Name";
            v.Name.LastName = "Last Name";
            v.DisplayName = "Display Name";
            //vlist.Visibility.Add(new Visibility() { ListOrder = 2, DisplayName = "Name", Name = v.Name });
            //vlist.Visibility.Add(v);
            List<Visibility> list = new List<Visibility>();
            list.Add(v);
            vlist.Visibility = list;
            File.WriteAllText(@"d:\Test1.xml", vlist.ToString());
            Console.WriteLine("Sucessfully created the xml file...");
            #endregion
            
            Console.ReadKey();
        }
        
                        
    }
    #region
    [Serializable]
    public class FullName
    {
        private String strFirstName;
        [XmlAttribute("FirstName")]
        public String FirstName
        {
            get { return strFirstName; }
            set { strFirstName = value; }
        }
        private String strMiddleName;
        [XmlAttribute("MiddleName")]
        public String MiddleName
        {
            get { return strMiddleName; }
            set { strMiddleName = value; }
        }
        private String strLastName;
        [XmlAttribute("LastName")]
        public String LastName
        {
            get { return strLastName; }
            set { strLastName = value; }
        }
    }
    #endregion
    #region Visibility
    [Serializable]
    public class Visibility
    {
        [XmlElement("Name")]
        public FullName Name { get; set; }
        [XmlAttribute("DisplayName")]
        public String DisplayName { get; set; }
        [XmlAttribute("ListOrder")]
        public int ListOrder { get; set; }
    }
    #endregion
    #region Visibilities
    [Serializable]
    public class Visibilities
    {
        [XmlAttribute("AppName")]
        public String AppName { get; set; }
        [XmlElement("Visibility")]
        public List<Visibility> Visibility { get; set; }
        #region
        public override string ToString()
        {
            string l_strXML = string.Empty;
            XmlSerializer Xml = new System.Xml.Serialization.XmlSerializer(GetType());
            MemoryStream ms = new MemoryStream();
            Xml.Serialize(ms, this);
            Byte[] Buffer = new byte[ms.Length];
            ms.Seek(0, 0);
            ms.Read(Buffer, 0, (int)ms.Length);
            l_strXML = System.Text.Encoding.ASCII.GetString(Buffer, 0, (int)ms.Length);
            return l_strXML;
        }
        #endregion
    }
    #endregion
}
 
Share this answer
 
Comments
Pratik Gaikwad 11-May-13 2:35am    
Thank you.
Mohammed Hameed 11-May-13 2:35am    
You're welcome!!!
Mohammed Hameed 11-May-13 2:36am    
Did u understand what was the issue?
Pratik Gaikwad 11-May-13 2:52am    
yes... I was attempting to add list inside a list without initiating...
Mohammed Hameed 11-May-13 2:53am    
Very good...

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900