我想将该属性从子类传播到父类,
即:如果更改了MySchool.ModifiedTime,它也应该更改学生类中的ModifiedTime,就像明智的LstBook [0] .ModifiedTime一样,它也应该更改MySchool.ModifiedTime和Student.ModifiedTime ...(基本上ModifiedTime应该同步) ,任何的想法

我正在寻找BaseClass中的Generic函数来实现这一点。

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属性进行检索。

10-06 09:34