c# - 在类层次结构中传播属性值

标签 c# .net oop

我想将属性从子类传播到父类, 即:如果 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/

相关文章:

c# - 空传播 - 第二次空检查

c# - 使用 COM 组件时出错

c++ - 类型为 "const char *"的值不能分配给类型为 "char"的实体 C OOP

对象的 add() 方法的 Java ArrayList 不起作用

python - 哎呀类(class)圈子

c# - 自定义解析字符串

c# - 当访问存储在动态中的对象的值类型属性时,是否会导致对这些属性的值进行装箱?

c# - 更好的 PropertyChanged 和 PropertyChanging 事件处理

c# - 参数名称 : root cannot be Null exception Ninject

asp.net - 如何在构建过程中从 Visual Studio 调用 aspnet_compiler?