我想将属性从子类传播到父类, 即:如果 MySchool.ModifiedTime 发生变化,它也应该改变学生类(class)中的 ModifiedTime,就像明智的 LstBook[0].ModifiedTime 发生变化一样,它应该改变 MySchool。 ModifiedTime 以及 Student.ModifiedTime...(基本上 ModifiedTime 应该同步),任何想法
我正在 BaseClass 中寻找通用函数来实现这一点。
public class MyBaseClass
{
public DateTime ModifiedTime{ get; set; }
}
public class Student: MyBaseClass
{
public string Name { get; set; }
public school MySchool {get;set;}
}
public class School : MyBaseClass
{
public string SchoolName { get; set; }
public List<Book> LstBook {get;set;}
}
public class Book:MyBaseClass
{
public string BookName{get;set;}
}
最佳答案
您可以将 ModifiedTime
设为虚拟,然后在每个子类中覆盖它以执行同步。
public class MyBaseClass
{
public virtual DateTime ModifiedTime{ get; set; }
}
public class Student: MyBaseClass
{
public string Name { get; set; }
public school MySchool {get;set;}
public virtual DateTime ModifiedTime
{
get {
return MySchool.ModifiedTime;
}
set {
MySchool.ModifiedTime = value;
}
}
}
等等。
但是,我会重新考虑您的类层次结构,因为分解似乎不正确。如果所有属性都需要在整个层次结构中同步,那么也许只有一个类应该拥有该属性,而其他类应该引用它。例如,只有 School
应该具有 ModifiedTime 属性,当您需要获取学生的修改时间时,您可以通过 MySchool
属性检索它
关于c# - 在类层次结构中传播属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4811421/