C# 如何将值设置为学生类的深层属性?

C# 如何将值设置为学生类的深层属性?,c#,system.reflection,C#,System.reflection,我还是C的新手,下面是我的学生班 class Student { public partial class Document { private StudentBio studentBio; public StudentBio StudentBio{get;set;} } public partial class StudentBio { private StudentCourse[] studentCour

我还是C的新手,下面是我的学生班

class Student
{
    public partial class Document
    {
        private StudentBio studentBio;
        public StudentBio StudentBio{get;set;}
    }
    public partial class StudentBio
    {
        private StudentCourse[] studentCourse;
        public StudentCourse[] StudentCourse{get;set;}
    }

    public partial class StudentCourse
    {
        private string courseId;
        private string courseName;
        public string CourseName{get;set;}
    }
}
如何设置courseId,因为在字段中设置值时出错。我无法直接访问Document.StudentBio.StudentCourse.CourseId来设置值

public static void Main()
{   
    Student myObject = new Student();
    Type myType = typeof(Student);
    FieldInfo myFieldInfo = myType.GetField("courseId", 
        BindingFlags.NonPublic | BindingFlags.Instance); 
    Console.WriteLine(myFieldInfo);
}
不需要反射来设置deep属性。不确定为什么要建立这么多层次结构,但可以通过执行以下操作来解决问题

必须在每个类的构造函数中初始化属性,以避免NullReferenceExection

从主要

public static void Main()
{ 
        Student myObject = new Student();          
        myObject.StudentDoc.StudentBio.StudentCourse.CourseId = "10";
}

您真的需要在这里使用反射吗?除了不必要的反射之外:为什么您有属性getter+setter和一个私有支持字段?您不需要反射来设置深层属性。如果您有这些东西的实例,Doc.Bio.Course.CourseId=7应该可以工作。将来你会想提供一个比我得到的更多的细节error@Plutonix除此之外,可能会引发的空引用异常:很可能我需要使用反射来访问Doc.StudentBio.StudentCourse.CourseId,因为我无法访问direct,如我所述。
public static void Main()
{ 
        Student myObject = new Student();          
        myObject.StudentDoc.StudentBio.StudentCourse.CourseId = "10";
}