代码之家  ›  专栏  ›  技术社区  ›  Christopher Edwards

从.net中的现有基础对象创建派生对象

  •  4
  • Christopher Edwards  · 技术社区  · 16 年前

    愚蠢的问题。

    1 回复  |  直到 16 年前
        1
  •  5
  •   Marc Gravell    16 年前

    Person person = new Employee(); // for some reason
    ...
    Employee emp = (Employee)person;
    

    如果这个人只是一个人:你不能;你可以让雇员 概括 这个人——或者你可以 字段:

    class Employee { // encapsulation
      private readonly Person person;
      public Person {get {return person;}}
      public Employee(Person person) {this.person = person;}
      public Employee() : this(new Person()) {}
    }
    

    class Employee : Person { // inheritance
      public Employee(Person person) : base(person) {}
      public Employee() {}
    }
    class Person {
        public Person(Person template) {
            this.Name = template.Name; // etc
        }
        public Person() {}
    }