簡體   English   中英

如何使Automapper在目標對象中設置對源對象的引用?

[英]How can I make Automapper set a reference to the source object in the destination object?

在我正忙於編寫的應用程序中,我所有的映射目標對象都源自這樣的基類:

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對象的引用。

您可以使用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;
    }

}

完整的詳細信息可以在自定義解析器文檔中找到

您也許也可以直接做到這一點,但我還沒有嘗試過。 可能是這樣的:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM