我有一个返回名为“UserSettings”的自定义对象的服务在我的应用程序中我想向“UserSettings”对象添加更多属性,所以我创建了一个名为“MyUserSettings”的新对象,它继承自“UserSettings”现在我想要使用“UserSettings”中保存的现有数据和我的新属性的新数据填充我的新对象。我不想将每个属性逐个映射到新对象中的相同属性,如此..
_MyUserSettings.Name=_UserSettings.Name;
有没有办法或更好的方法来解决我正在做的事情,将现有对象的所有属性一次性填充到我的新对象中?
答案 0 :(得分:4)
是的,您可以使用Copy Constructor模式。它会给你带来另一个好处 - 你不需要公共属性设置器,所以对象变得不可变。
public MyUserSettings(UserSettings baseSettings)
{
// TODO: set all properties
}
答案 1 :(得分:2)
不幸的是,这是唯一的方法,但具体的机制可以改变。有很多方法(不是全部列出):
他们都归结为几乎做同样的事情。
如果UserSettings
实际上是MyUserSettings
,那么您可以简单地投射它:
var mySettings = (MyUserSettings)settings;
但是,如果UserSettings
确实是UserSettings
,则会失败。