|
|
|
@ -2,7 +2,6 @@ |
|
|
|
using AutoMapper; |
|
|
|
using Microsoft.Extensions.DependencyInjection; |
|
|
|
using Shouldly; |
|
|
|
using Volo.Abp.AutoMapper.SampleClasses; |
|
|
|
using Volo.Abp.Modularity; |
|
|
|
using Volo.Abp.Testing; |
|
|
|
using Xunit; |
|
|
|
@ -22,11 +21,11 @@ namespace Volo.Abp.AutoMapper |
|
|
|
[Fact] |
|
|
|
public void Should_Custom_Service_Construction() |
|
|
|
{ |
|
|
|
var myEntity = new MyEntity |
|
|
|
var source = new SourceModel |
|
|
|
{ |
|
|
|
Number = 2 |
|
|
|
Name = nameof(SourceModel) |
|
|
|
}; |
|
|
|
_objectMapper.Map<MyEntity, MyEntityDto>(myEntity).Number.ShouldBe(1); |
|
|
|
_objectMapper.Map<SourceModel, DestModel>(source).Name.ShouldBe(nameof(CustomMappingAction)); |
|
|
|
} |
|
|
|
|
|
|
|
[DependsOn(typeof(AbpAutoMapperModule))] |
|
|
|
@ -41,33 +40,43 @@ namespace Volo.Abp.AutoMapper |
|
|
|
{ |
|
|
|
configurationContext.MapperConfiguration.ConstructServicesUsing(type => |
|
|
|
type.Name.Contains(nameof(CustomMappingAction)) |
|
|
|
? new CustomMappingAction(1) |
|
|
|
? new CustomMappingAction(nameof(CustomMappingAction)) |
|
|
|
: Activator.CreateInstance(type)); |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public class SourceModel |
|
|
|
{ |
|
|
|
public string Name { get; set; } |
|
|
|
} |
|
|
|
|
|
|
|
public class DestModel |
|
|
|
{ |
|
|
|
public string Name { get; set; } |
|
|
|
} |
|
|
|
|
|
|
|
public class MapperActionProfile : Profile |
|
|
|
{ |
|
|
|
public MapperActionProfile() |
|
|
|
{ |
|
|
|
CreateMap<MyEntity, MyEntityDto>().AfterMap<CustomMappingAction>(); |
|
|
|
CreateMap<SourceModel, DestModel>().AfterMap<CustomMappingAction>(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public class CustomMappingAction : IMappingAction<MyEntity, MyEntityDto> |
|
|
|
public class CustomMappingAction : IMappingAction<SourceModel, DestModel> |
|
|
|
{ |
|
|
|
private readonly int _number; |
|
|
|
private readonly string _name; |
|
|
|
|
|
|
|
public CustomMappingAction(int number) |
|
|
|
public CustomMappingAction(string name) |
|
|
|
{ |
|
|
|
_number = number; |
|
|
|
_name = name; |
|
|
|
} |
|
|
|
|
|
|
|
public void Process(MyEntity source, MyEntityDto destination, ResolutionContext context) |
|
|
|
public void Process(SourceModel source, DestModel destination, ResolutionContext context) |
|
|
|
{ |
|
|
|
destination.Number = _number; |
|
|
|
destination.Name = _name; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|