如何让Automapper设置对目标对象中源对象的引用?

时间:2012-12-16 07:04:59

标签: c# .net automapper

在我忙于编写的应用程序中,我的所有映射目标对象都来自这样的基类:

public class CatalogObject<TObject>
{
    TObject InnerObject { get; set; }
}

public class CatalogTable : CatalogObject<table>
{
    public string Name { get; set; }
    public int ObjectId { get; set; }
}

现在,在将table对象映射到CatalogTable对象之后,我希望该目标的InnerObject属性是对源table对象的引用。

1 个答案:

答案 0 :(得分:0)

您可以使用Custom Resolver

来完成
Mapper.CreateMap<Table, CatalogTable>()
    .ForMember(dest => dest.InnerObject,
               opt => opt.ResolveUsing<InnerObjectResolver>());

解析器的位置如下:

public class InnerObjectResolver : ValueResolver<Table, Table>
{
    protected override Table ResolveCore(Table source)
    {
        return source;
    }

}

详细信息请参见custom resolver documentation

您也可以直接这样做,但我没有尝试过。这样的事情可能是:

Mapper.CreateMap<Source, Destination>()
    .ForMember(dest => dest.InnerObject, opt => opt.MapFrom(src => src));