如何在AutoMapper中为同一类型调用不同的映射策略?

时间:2011-08-11 15:58:55

标签: c# automapper

我有一个客户类&我希望客户电子邮件字段以CSV格式显示,以显示管理列表视图。当编辑视图显示时,我希望视图在文本框中显示电子邮件,并使用换行符字符进行分割。

我不希望每个视图有2个不同的类只使用相同的,第一个使用IEnumerable<T>来显示列表。我的班级非常庞大,我不希望有2个单独的视图类来管理。

理想的目标是为每个不同的映射方案提供2个不同的AutoMapper映射1,而不仅仅局限于在Bootstrap阶段使用CreateMap创建的映射方案。我该如何实现这一目标?实际上,我想根据我在代码中的位置来切换映射策略。

1 个答案:

答案 0 :(得分:1)

理想情况下,您将使用两种不同的视图模型,并将源映射到所需的目标。但是,如果您不想使用此路由,则可以选择创建具有两个只读属性的视图模型。

public class SomeClassViewModel
{
    public string FirstName { get; set;}

    public string LastName { get; set; }

    public string Emails { get; set; }

    public string EmailsCSV
    {
        get
        {
            var csv = Emails;
            //Do CSV transform here
            return csv;
        }
    }

    public string EmailsCRLF
    {
        get
        {
            var crlf = Emails;
            //Do crlf transform here
            return crlf;
        }
    }

}

同样,理想情况下,您希望每个视图都遵循一个模型的规则。这并不意味着你需要为每个模型编写一个全新的视图,总是有继承。

MyViewModelA : MyViewModelBase
MyViewModelB : MyViewModelBase