所以我正在尝试针对接口(interface)而不是实现进行编码。所以我有一个工厂返回一个派生自 Employee 的对象。所以这些对象可能类似于 Developer : Employee、Secretary : Employee 等。
所以我将所有共享属性(如 FirstName、LastName、Email 等)放在基类 (Employee) 中。
而且我应该将特定于每种类型的所有属性放在该类型中。所以 Developer 中会有一些属性,例如 Skills、ProgrammingLanguages 等。但是除非我使用 Developer 的具体类型,否则我将无法从 Employee 对象访问这些属性。
例如
Employee employee = new EmployeeFactory.CreateEmployee(EmployeeType.Developer);
employee.ProgrammingLanguages = "C#, Java, C++"; <-- compile error
解决此问题的最佳方法是什么?反射(reflection)...?
最佳答案
如果您要明确说明要使用哪种类型的员工,为什么还要为工厂费心呢?
相反,你可以这样写:
Developer dev = new Developer();
dev.ProgrammingLanguages = "C#, Java, C++"; // compiles fine
稍后,您仍然可以将“开发人员”添加到员工列表中,即:
IList<Employee> theEmployees = GetEmployees();
theEmployees.Add(dev); // This is fine, since Developer is an Employee...
关于c# - 在派生类中添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5422050/