簡體   English   中英

如何為學生類的深層屬性設置值?

[英]How do I set value into deep properties of the Student class?

我還是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);
}

不需要Reflection來設置deep屬性。 不知道為什么要進行這么多的層次結構設置,但是可以通過執行以下操作解決問題。

您必須在每個類的Constructor中初始化屬性,以避免NUllReferenceExecption

public class Student
{
    public Student()
    {
        StudentDoc = new Document();
    }
   public Document StudentDoc { get; set; }

}
public class Document
{
    public Document()
    {
        StudentBio = new StudentBio();
    }
    public StudentBio StudentBio { get; set; }
}
public class StudentBio
{
    public StudentBio()
    {
        StudentCourse = new StudentCourse();
    }
    public StudentCourse StudentCourse { get; set; }
}
public class StudentCourse
{
    public string CourseId { get; set; }
    public string CourseName { get; set; }
}

從主

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM