映射"long"创建对象
Mapping "long" to create an object
我正在尝试映射来自我的 url 路由的一个长字段以从我的控制器创建一个查询对象,我可以使用自动映射器
创建地图(MemberList.None);
来源:-long id
目的地:-
public class GetPlanQuery : IRequest<PlanDto>
{
public long Id { get; }
public GetPlanQuery(long id)
{
Id = id;
}
internal sealed class GetPlanQueryHandler : IRequestHandler<GetPlanQuery, PlanDto>
{
//Logic will go here
}
}
我使用的地图如下
CreateMap<long, GetPlanQuery>(MemberList.None);
我在作为
执行时遇到异常
System.ArgumentException:
needs to have a constructor with 0 args or only optional args.'
正如 Lucian 正确建议的那样,您可以通过实施 ITypeConverter:
来实现这种自定义映射
public class LongToGetPlanQueryTypeConverter : ITypeConverter<long, GetPlanQuery>
{
public GetPlanQuery Convert(long source, GetPlanQuery destination, ResolutionContext context)
{
return new GetPlanQuery(source);
}
}
然后在 AutoMapper 配置中指定它的用法:
configuration.CreateMap<long, GetPlanQuery>()
.ConvertUsing<LongToGetPlanQueryTypeConverter>();
编辑
或者,您可以只使用 Func
:
configuration.CreateMap<long, GetPlanQuery>()
.ConvertUsing(id => new GetPlanQuery(id));
我正在尝试映射来自我的 url 路由的一个长字段以从我的控制器创建一个查询对象,我可以使用自动映射器
创建地图(MemberList.None);
来源:-long id
目的地:-
public class GetPlanQuery : IRequest<PlanDto>
{
public long Id { get; }
public GetPlanQuery(long id)
{
Id = id;
}
internal sealed class GetPlanQueryHandler : IRequestHandler<GetPlanQuery, PlanDto>
{
//Logic will go here
}
}
我使用的地图如下
CreateMap<long, GetPlanQuery>(MemberList.None);
我在作为
执行时遇到异常System.ArgumentException:
needs to have a constructor with 0 args or only optional args.'
正如 Lucian 正确建议的那样,您可以通过实施 ITypeConverter:
来实现这种自定义映射public class LongToGetPlanQueryTypeConverter : ITypeConverter<long, GetPlanQuery>
{
public GetPlanQuery Convert(long source, GetPlanQuery destination, ResolutionContext context)
{
return new GetPlanQuery(source);
}
}
然后在 AutoMapper 配置中指定它的用法:
configuration.CreateMap<long, GetPlanQuery>()
.ConvertUsing<LongToGetPlanQueryTypeConverter>();
编辑
或者,您可以只使用 Func
:
configuration.CreateMap<long, GetPlanQuery>()
.ConvertUsing(id => new GetPlanQuery(id));