Skip to content

Mapping fails to recognize existing constructor parameters #3166

@WellspringCS

Description

@WellspringCS

Source/destination types

Src: 
 public class UserClaim : AuditableEntity
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int UserClaimId { get; set; }

        [Required]
        public int UserId { get; set; }

        [Required]
        [ForeignKey("ClaimType")]
        public ClaimTypeEnum ClaimTypeId { get; set; }
        
        [Required]
        public ClaimType ClaimType { get; set; }

        [Required]
        [MaxLength(50)]
        public string ClaimValue { get; set; }
    }
}
public class ClaimType : AuditableEntity
    {
        [Key]
        public ClaimTypeEnum ClaimTypeId { get; set; }
        public string ClaimTypeName { get; set; }
    }
Dest: System.Security.Claims.Claim


public class Claim
    {
        ...
        //
        // Summary:
        //     Initializes a new instance of the System.Security.Claims.Claim class with the
        //     specified claim type, and value.
        //
        // Parameters:
        //   type:
        //     The claim type.
        //
        //   value:
        //     The claim value.
        //
        // Exceptions:
        //   T:System.ArgumentNullException:
        //     type or value is null.
        public Claim(string type, string value);
...

Mapping configuration

AutoMapper.Mapper.Initialize(config =>
            {
                config.CreateMap<UserClaim, Claim>()
                .ForCtorParam("value", opt => opt.MapFrom(src => src.ClaimValue))
                .ForCtorParam("type", opt => opt.MapFrom(src => src.ClaimType.ClaimTypeName));
            });

Version: 8.0.0

Expected behavior

successfully map?

Actual behavior

Exception has occurred: CLR/AutoMapper.AutoMapperConfigurationException
An exception of type 'AutoMapper.AutoMapperConfigurationException' occurred in AutoMapper.dll but was not handled in user code: 'Claim does not have a constructor with a parameter named 'value'.
System.Security.Claims.Claim'
at AutoMapper.CtorParamConfigurationExpression1.Configure(TypeMap typeMap) at AutoMapper.Configuration.MappingExpression2.Configure(TypeMap typeMap)
at AutoMapper.ProfileMap.BuildTypeMap(IConfigurationProvider configurationProvider, ITypeMapConfiguration config)
at AutoMapper.ProfileMap.Register(IConfigurationProvider configurationProvider)
at AutoMapper.MapperConfiguration.Seal()
at AutoMapper.MapperConfiguration..ctor(MapperConfigurationExpression configurationExpression)
at AutoMapper.MapperConfiguration..ctor(Action1 configure) at AutoMapper.Mapper.Initialize(Action1 config)
at Wellspring.Eqp.Api.Startup.SetUpAutoMapper() in /home/brian/clients/walsh/eqp-api/src/Wellspring.Eqp.Api/Startup.cs:line 362
at Wellspring.Eqp.Api.Startup.Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger`1 logger) in /home/brian/clients/walsh/eqp-api/src/Wellspring.Eqp.Api/Startup.cs:line 241
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Microsoft.AspNetCore.Hosting.Internal.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
at Microsoft.AspNetCore.Hosting.Internal.ConfigureBuilder.<>c__DisplayClass4_0.b__0(IApplicationBuilder builder)
at Microsoft.AspNetCore.Hosting.Internal.GenericWebHostBuilder.<>c__DisplayClass13_0.b__2(IApplicationBuilder app)
at Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)
at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.b__0(IApplicationBuilder app)
at Microsoft.AspNetCore.Hosting.Internal.GenericWebHostService.d__31.MoveNext()

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions