【发布时间】:2011-03-24 16:04:17
【问题描述】:
所以我正在尝试编写接口而不是实现。所以我有一个工厂,它返回一个派生自 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
解决这个问题的最佳方法是什么?反射...?
【问题讨论】:
-
我认为在这种情况下你只需要在分配之前备份。
-
在这种情况下,针对基类进行编码是没有意义的,因为您正在显式访问派生类中的属性
-
如果您决定采用反射方式,您可能希望在 .NET 4 中使用 dynamic 关键字。这将使代码看起来更清晰。
标签: c# design-patterns