C# 如何将值设置为学生类的深层属性?
我还是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
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";
}