是否有通用的方法将新对象的值分配给原始对象的同一类值?

时间:2012-11-28 21:26:56

标签: asp.net-mvc-3 automapper valueinjecter

我有一个原始文档对象,它有子类和属性。我有一个不同的对象,它是该对象的一个​​子集,它保存从表单输入的值,如果您愿意,则保存视图模型。由于两个对象都来自同一个类,因此结构完全相同。

有没有办法将新对象的值一般分配给原始对象?我目前的做法是明确的:

            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);

提前感谢您的任何建议和帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用AutoMapper,即此任务的对象到对象映射器。可以在http://automapper.org/

找到库和文档

答案 1 :(得分:0)

ValueInjecter可以解决您需要的问题

相关问题