2009-02-01 97 views
4

愚蠢的问题。从.net中的现有基础对象创建派生对象

比方说,我有一堆人的对象,其所有的字段都填充了数据,我有一个从person类派生的雇员类型,并且具有与作为雇员相关的额外字段。如何获取特定现有人员对象的员工对象?即如何将人员对象传递给员工?

+0

为什么答案是这样吗? 我不明白你为什么不能将人员转交给员工。如果它是基类,那么所有的基类字段都必须在那里? 我在误解一些显而易见的事情,为什么不能这样做? – tim 2009-07-23 12:13:36

回答

5

的人如果是作为员工创建的,那么只投:

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() {} 
} 
+0

我以为这么多;感谢你的回答。 – 2009-02-01 15:11:10