代码之家  ›  专栏  ›  技术社区  ›  Sessiz Saat

从继承类更改基对象属性的最佳实践是什么

  •  3
  • Sessiz Saat  · 技术社区  · 15 年前

    我想将student1的“person”属性设置为person1。这是否可以通过分配或不逐个设置属性的任何方式实现?

    static void Main(string[] args)
    {
      var student1 = new Student {Id = 1, Name = "kaya", Class = "3b", Number = "156"};
                var person1 = new Person { Id = 2, Name = "hasan" };
    
            }
    
    
        public class Person
        {
            public int Id { get; set; }
            public String Name { get; set; }
        }
    
        public class Student : Person
        {
            public int Number { get; set; }
            public String Class { get; set; }
        }
    
    2 回复  |  直到 15 年前
        1
  •  4
  •   Jon Skeet    15 年前

    好吧,你 能够 反省一下-但我个人不会。你可以加一个 CopyTo 方法在 Person :

    public class Person
    {
        public int Id { get; set; }
        public String Name { get; set; }
    
        public void CopyTo(Person other)
        {
            other.Id = Id;
            other.Name = Name;
        }
    }
    

    另一种选择是使用组合而不是继承,这样 Student 有一个 属性而不是派生自 . 不过,这要看大局而定——你真的想要 学生 成为一名专业人士 或者它只是一种简单的获取数据的方法?

    这种问题经常会出现,但我很少发现自己想用自己的代码去做…我很有兴趣看到需要这个的代码的设计,来弄清楚我应该如何设计它。我不清楚这是否仅仅是我不做这种鼓励这种模式的工作的问题,或者我是否使用替代设计来解决相同的问题。

        2
  •  0
  •   Kris Krause    15 年前

    你看过汽车旅馆吗?如果您使用了半途而废的规范,那么您最终会编写几乎为零的代码。-

    http://automapper.codeplex.com/

    我最近用automapper把我的poco映射成亚音速。