簡體   English   中英

如何映射ICollection <T> 從List派生的類 <T>

[英]How to map an ICollection<T> to Class derived from List<T>

我正在設置我的模型和我的視圖模型之間的映射,我正在嘗試從ICollection映射到從List派生的類

我試圖在我的ListItemClassVM和ICollection之間進行映射但是得到錯誤'參數類型不匹配'

選項一映射適用於此:

public class ParentVM
{
    public List<ListItemClass> ListItemClasses { get; set; }
}

選項二映射不起作用:

public class ParentVM
{
    public ListItemClassVM ListItemClasses { get; set; }
}

public ListItemClassVM : List<ListItemClass>
{

}

映射設置:

public ModelClass_ParentVM_Profile()
    {
        CreateMap<ModelClass, ParentVM>()
            .ForMember(d => d.ListItemClasses, o => o.MapFrom(i => i.ModelCollection))
            ;

        CreateMap<ParentVM, ModelClass>()
            ;

    }

嘗試設置映射,因此選項二將映射。

我認為有更多的方法可以達到解決方案,但是你無法擺脫從ICollection <ListItemClass>到ListItemClassVM的手動轉換。 更簡單的方法可能是向ListItemClassVM添加一個構造函數,該構造函數接受ICollection <ListItemClass>並使用ICollection中的元素初始化自身,然后您可以執行以下操作:

 CreateMap<ModelClass, ParentVM>()
        .ForMember(d => d.ListItemClasses, o => o.MapFrom(i =>new ListItemClassVM (i.ModelCollection)))
        ;

暫無
暫無

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

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