简体   繁体   中英

Automapper: Class and property with identical names not mapping

Below is a barebones class setup for what I'm describing.

public class List
{
   public int Id {get;set;}
   public RecipientCount RecipientCount {get;set;}
   public RecipientCount SomeOtherName {get;set;}
}

public class RecipientCount
{
   public int Total {get;set;}
   public int Active {get;set;}
}

public class ListDto
{
   public int id {get;set;}
   public RecipientCountDto recipientCount {get;set;}
   public RecipientCountDto someOtherName {get;set;}
}

public class RecipientCountDto
{
   public int total {get;set;}
   public int active {get;set;}
}

public class AutoMapperConfiguration
{
    public void Init(AutoMapper.IConfiguration config)
    {
       config.CreateMap<RecipientCount,RecipientCountDto>();
    }
}

if I attempt to use this it throws a:

   The following property on Reachmail.Domain.Component.RecipientCountDto cannot 
   be mapped: 
   recipientCount
   Add a custom mapping expression, ignore, add a custom resolver, or modify the 
   destination type Reachmail.Domain.Component.RecipientCount.
   Context:
   Mapping to property recipientCount of type Reachmail.Domain.Component.RecipientCountDto 
   from source type Reachmail.Domain.Component.RecipientCount
   Mapping to type Reachmail.Web.UI.Controllers.ListDto from source type 
   Reachmail.Domain.Contacts.Lists.List
   Exception of type 'AutoMapper.AutoMapperConfigurationException' was thrown.

If however I remove RecipientProviderDto.recipientProvider it works fine. So it leads me to believe that its the fact that the class name and the property are the same that is causing an issue. Any insights on how to fix it or if its a bug?

try with UpperLetter:

public class ListDto
{
   public int Id {get;set;}
   public RecipientCountDto RecipientCount {get;set;}
   public RecipientCountDto SomeOtherName {get;set;}
}

public class RecipientCountDto
{
   public int Total {get;set;}
   public int Active {get;set;}
}

Hope it helps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM