首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >空号之间的映射异常?

空号之间的映射异常?
EN

Stack Overflow用户
提问于 2015-09-28 13:33:08
回答 1查看 429关注 0票数 1

我得到了一个例外:

缺少类型映射配置或不支持映射。 映射类型: FollowUpActivityDTO -> Nullable1 LEST.Model.FollowUpActivityDTO -> System.Nullable1[System.DateTime,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089] 目的地路径:清单1 来源价值: 类FollowUpActivityDTO { Id: 75e83860-65e4-11e5-9a90-382c4ab9e433时间戳: 28/09/2015 11:28:55 StartTimestamp: 28/09/2015 15:26:00 DueTimestamp: 28/09/2015 15:26:00 ClosingTimestamp: 28/09/2015 15:26:00事宜: elasticsearch - copia - copia.jar评论:存档状态:打开BacklogStatus:未知}

代码语言:javascript
复制
{Trying to map FollowUpActivityDTO to Nullable`1.}

当我表演时,它会引发:

代码语言:javascript
复制
return AutoMapper.Mapper.Map<List<LEST.Model.FollowUpActivityDTO>, List<Domain.FollowUpActivity>>(dtos);

这是目的舱:

代码语言:javascript
复制
public class FollowUpActivity
{
    private String id;              // Generated on server
    private DateTime? creationDate;
    private DateTime? startDate;
    private DateTime? dueDate;
    private DateTime? closingDate;
    private String matter;
    private String comment;
    private FollowUpActivityStatus status;
    private FollowUpActivityBacklogStatus backlogStatus;

    private List<MetaInfoValue> metainfos;
    private List<MetaResource> resources;

这是源类:

代码语言:javascript
复制
 public class FollowUpActivityDTO
{
    public FollowUpActivityDTO();

    public string BacklogStatus { get; set; }
    public string ChannelId { get; set; }
    public DateTime? ClosingTimestamp { get; set; }
    public string Comment { get; set; }
    public DateTime? DueTimestamp { get; set; }
    public string Id { get; set; }
    public string Matter { get; set; }
    public DateTime? StartTimestamp { get; set; }
    public string Status { get; set; }
    public DateTime? Timestamp { get; set; }

和测绘概况:

代码语言:javascript
复制
AutoMapper.Mapper.CreateMap<LEST.Model.FollowUpActivityDTO, Domain.FollowUpActivity>()
            .ForMember(dst => dst.CreationDate, opts => opts.Ignore()) //opts.MapFrom(s => s.Timestamp.HasValue ? s.Timestamp.Value : DateTime.MinValue))
            .ForMember(dst => dst.StartDate, opts => opts.Ignore()) //opts.MapFrom(s => s.StartTimestamp.HasValue ? s.StartTimestamp.Value : DateTime.MinValue))
            .ForMember(dst => dst.DueDate, opts => opts.Ignore()) //opts.MapFrom(s => s.DueTimestamp.HasValue ? s.DueTimestamp.Value : DateTime.MinValue))
            .ForMember(dst => dst.ClosingDate, opts => opts.Ignore()) //opts.MapFrom(s => s.ClosingTimestamp.HasValue ? s.ClosingTimestamp.Value : DateTime.MinValue));
            .ForMember(dst => dst.Status, opts => opts.UseValue<Domain.FollowUpActivityStatus>(Domain.FollowUpActivityStatus.Open))
            .ForMember(dst => dst.BacklogStatus, opts => opts.UseValue<Domain.FollowUpActivityBacklogStatus>(Domain.FollowUpActivityBacklogStatus.Work));
EN

回答 1

Stack Overflow用户

发布于 2015-09-29 07:53:42

我创建了一个测试来测试这个映射:

代码语言:javascript
复制
namespace Tests
{
[TestFixture]
public class Mapping
{

    [SetUp]
    public void initialize()
    {
        Core.Mappings.AutoMapperConfiguration.Configure();
    }

    [Test]
    public void configutation()
    {
        AutoMapper.Mapper.AssertConfigurationIsValid<Core.Mappings.Profiles.FollowUpActivityProfile>();
    }

    [Test]
    public void followUpActivityDTOToDOMAIN()
    {
        LEST.Model.FollowUpActivityDTO dto = new LEST.Model.FollowUpActivityDTO()
        {
            Id = new Guid().ToString(),
            Timestamp = DateTime.UtcNow,
            StartTimestamp = DateTime.UtcNow,
            DueTimestamp = DateTime.UtcNow,
            ClosingTimestamp = DateTime.UtcNow,
            Matter = "Matter",
            Comment = "Comment",
            Status = "open",
            BacklogStatus = "work",
            Metainfos = new System.Collections.Generic.List<LEST.Model.MetaInfoValueDTO>()
        };

        Domain.FollowUpActivity domain = new Domain.FollowUpActivity();
        AutoMapper.Mapper.Map<LEST.Model.FollowUpActivityDTO, Domain.FollowUpActivity>(dto, domain);

        domain.Should().NotBeNull();
        domain.Id.Should().Be(dto.Id);
    }
}
}

看看:

代码语言:javascript
复制
Domain.FollowUpActivity domain = new Domain.FollowUpActivity();
AutoMapper.Mapper.Map<LEST.Model.FollowUpActivityDTO, Domain.FollowUpActivity>(dto, domain);

现在我在工作。但是,如果我按以下方式编写代码,它就会崩溃:

代码语言:javascript
复制
Domain.FollowUpActivity domain = AutoMapper.Mapper.Map<LEST.Model.FollowUpActivityDTO, Domain.FollowUpActivity>(dto);

我正在找出问题在我的目标类的构造函数上,那么:

代码语言:javascript
复制
namespace Domain
{
public enum FollowUpActivityStatus
{
    Open,
    Closed,
    Delegated
}

public enum FollowUpActivityBacklogStatus
{
    Work,
    Sprint        
}

public class FollowUpActivity
{
    private String id;              // Generated on server
    private DateTime? creationDate;
    private DateTime? startDate;
    private DateTime? dueDate;
    private DateTime? closingDate;
    private String matter;
    private String comment;
    private FollowUpActivityStatus status;
    private FollowUpActivityBacklogStatus backlogStatus;

    private List<MetaInfoValue> metainfos;
    private List<MetaResource> resources;

    #region Properties

    public String Id
    {
        get { return id; }
        set { id = value; }
    }

    public DateTime? CreationDate
    {
        get { return creationDate; }
        set { creationDate = value; }
    }

    public DateTime? StartDate
    {
        get { return startDate; }
        set { startDate = value; }
    }

    public DateTime? DueDate
    {
        get { return dueDate; }
        set { dueDate = value; }
    }

    public DateTime? ClosingDate
    {
        get { return closingDate; }
        set { closingDate = value; }
    }

    public FollowUpActivityStatus Status
    {
        get { return status; }
        set { status = value; }
    }

    public FollowUpActivityBacklogStatus BacklogStatus
    {
        get { return backlogStatus; }
        set { backlogStatus = value; }
    }

    public String Matter
    {
        get { return matter; }
        set { matter = value; }
    }

    public String Comment
    {
        get { return comment; }
        set { comment = value; }
    }

    public List<MetaInfoValue> Metainfos
    {
      get { return metainfos; }
      set { metainfos = value; }
    }

    public List<MetaResource> Resources
    {
        get { return resources; }
        set { resources = value; }
    }

    #endregion

    #region Constructors

    public FollowUpActivity()
        : this(null, null)
    {

    }

    public FollowUpActivity(String matter, String comment = null, params Domain.MetaInfoValue[] metainfos)
        : this(DateTime.Now, matter, comment, metainfos)
    {

    }

    public FollowUpActivity(DateTime creationDate, String matter, String comment = null, params Domain.MetaInfoValue[] metainfos)
        : this(creationDate, matter, new List<MetaResource>(), comment, metainfos)
    {

    }

    public FollowUpActivity(DateTime creationDate, String matter, List<MetaResource> resources, String comment = null, params Domain.MetaInfoValue[] metainfos)
        : this(creationDate, matter, FollowUpActivityBacklogStatus.Work, new List<MetaResource>(), comment, metainfos)
    {

    }

    public FollowUpActivity(DateTime creationDate, String matter, FollowUpActivityBacklogStatus backlogStatus, List<MetaResource> resources, String comment = null, params Domain.MetaInfoValue[] metainfos)
        : this(creationDate, null, null, null, matter, FollowUpActivityStatus.Open, backlogStatus, new List<MetaResource>(), comment, metainfos)
    {

    }

    public FollowUpActivity(DateTime? creationDate, DateTime? startDate, DateTime? dueDate, DateTime? closingDate, String matter, FollowUpActivityStatus status, FollowUpActivityBacklogStatus backlogStatus, List<MetaResource> resources, String comment = null, params Domain.MetaInfoValue[] metainfos)
    {
        this.id = String.Empty;
        this.creationDate = creationDate;
        this.startDate = startDate;
        this.dueDate = dueDate;
        this.closingDate = closingDate;
        this.matter = matter;
        this.comment = comment;
        this.status = status;
        this.backlogStatus = backlogStatus;

        this.metainfos = new List<MetaInfoValue>(metainfos);
        this.resources = resources;
    }

    #endregion

}
}

但是,我不知道为什么它会用第二种方法崩溃.有人知道为什么吗?谢谢大家。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32824382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档