【发布时间】:2013-02-21 13:00:53
【问题描述】:
假设我有一个 Person 列表(这是一个类)。它包含大约 20 个字段(姓名、姓氏、年龄、出生日期等)。所以我得到了这个列表:
var listOfPersons= MyContext.Persons.Cast<Person>();
现在,我需要遍历这个列表,并为每个 Person 添加一个新字段(它在类中不存在),比如说,CurrentDateTime。
我可以使用新字段创建一个新对象,并将值从 Person 复制并粘贴到新类。比如:
PersonNew newPerson = new PersonNew("Name", "Surname", "Age", "DateOfBirthdate", ... "CurrentDateTime");
但是,如果将来我更改 Person 类,这将非常糟糕。那么,有没有一种策略可以用一个新的领域来“扩展人”呢?这需要 Person 实例(无论它是什么)并添加新字段?
【问题讨论】:
-
你想使用这个扩展的
Person多久?如果只是为了这个方法,你可以使用匿名类型。 -
你必须在哪种情况下这样做?
-
在不修改扩展类的情况下,任何解决方案都无法避免对基类进行任意更改。这是“脆弱的基类问题”。
-
是的,我应该使用匿名类型...但是如何?无法在 LINQ 中“扩展”它
-
不可思议的是没有办法……它只是一个对象的复制到另一个“更多”大哈哈