Получение ошибки: ссылка на объект не установлена ​​на экземпляр объекта - PullRequest
0 голосов
/ 04 мая 2011

Это мой код C #.

public class Person
{
    public List<Employee> empDetails;        
}


public class Employee
{
   public string Id { get; set; }
   public string Name { get; set; }
   public string proj { get; set; }
   public string No { get; set; }
}
//This method is defined in a service
    public void ReadFiles()
    {
        DirectoryInfo dir = new DirectoryInfo("E:/NewFolder/NewFiles");
        FileInfo[] files = dir.GetFiles("*.*");
        Person p = new Person();
        Employee e = new Employee();
        foreach (FileInfo f in files)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(f.FullName);
            e.empId = doc.GetElementsByTagName("Id")[0].InnerText;
            e.empName = doc.GetElementsByTagName("Name")[0].InnerText;
            e.empSeatNo = doc.GetElementsByTagName("No")[0].InnerText;
            e.projGroup = doc.GetElementsByTagName("Grp")[0].InnerText;               
            p.empDetails.Add(e); //Here I get the error "Object reference not set to an instance of an object"
        }          
        }

Любая помощь приветствуется.

Ответы [ 2 ]

2 голосов
/ 04 мая 2011

Список никогда не назначается;это должно работать:

public class Person
{
    private readonly List<Employee> empDetails = new List<Employee>();
    public List<Employee> EmploymentDetails { get { return empDetails; } }
}

(и доступ .EmploymentDetails, т.е. p.EmploymentDetails.Add(e);)

2 голосов
/ 04 мая 2011

Класс Person не инициализируется empDetails.Большинство людей делают это в конструкторе.

public class Person
{
   public Person()
   {
       empDetails = new List<Employee>();
   }

  public List<Employee> empDetails { get; private set; }
}

Кроме того, ваш случай для имен свойств не соответствует соглашению.Обычно это EmpDetails или даже лучше EmployeeDetails.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...