2

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

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

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

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

4

1 回答 1

1

您可以使用自定义解析器来做到这一点:

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

}

完整的详细信息可以在自定义解析器文档中找到。

您也可以直接执行此操作,但我没有尝试过。可能是这样的:

Mapper.CreateMap<Source, Destination>()
    .ForMember(dest => dest.InnerObject, opt => opt.MapFrom(src => src));
于 2012-12-16T07:30:04.397 回答