我有一个原始文档对象,它有子类和属性。我有一个不同的对象,它是该对象的一个子集,它保存从表单输入的值,如果您愿意,则保存视图模型。由于两个对象都来自同一个类,因此结构完全相同。
有没有办法将新对象的值一般分配给原始对象?我目前的做法是明确的:
myOrigDoc.Introduction.Name = myDoc.Introduction.Name;
myOrigDoc.Introduction.Clients[0].Firstname =
myDoc.Introduction.Clients[0].Firstname;
另外,我想确保只分配具有值(非空)的属性。
可以这样做吗?
非常感谢,
版
编辑:使用ValueInjector进行实验,以及防止分配空值的类。
public class StrNotNull: ConventionInjection
{
protected override bool Match(ConventionInfo c)
{
return c.SourceProp.Name == c.TargetProp.Name && c.SourceProp.Value != null;
}
//protected override object SetValue(ConventionInfo c)
//{
// return c.SourceProp.Value.ToString();
//}
}
调用此代码的代码:
myOrigDoc.InjectFrom<StrNotNull>(myDoc);
EDIT2:Automapper使用的可能代码。虽然还不确定如何忽略空值,从而真正进行合并。
Mapper.CreateMap<Document, Document>();
myOrigDoc = Mapper.Map<Document, Document>(myDoc);
提前感谢您的任何建议和帮助。
答案 0 :(得分:1)
您可以使用AutoMapper,即此任务的对象到对象映射器。可以在http://automapper.org/
找到库和文档答案 1 :(得分:0)
ValueInjecter可以解决您需要的问题