MapsterMapper / MapsterMapper/Mapster
Generated Mapster.Tool mappers fails Dependency Injection
@andrerav is already working on this.
Since Jan 29, 2023.
- Dominant language
- C#
- Stars
- 5.2k
- Forks
- 410
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 6
Description
### Problem
I'm working on a project that encodes and decodes a hash for primary keys (according to https://hashids.org/). However when generating mapper source files that uses Dependency Injection in the mapper config the generated mapper class fails with the exception:
`Mapping must be called using ServiceAdapter`
Reading the source there is no `ServiceProvider` set in the parameters of `MapContext.Current` for source generated mappers calls like `ServiceMapper` does for runtime generated mappers:
```
public override TDestination Map(object source)
{
using var scope = new MapContextScope();
scope.Context.Parameters[DI_KEY] = _serviceProvider;
return base.Map(source);
}
```
How can this problem be solved?
### My Setup
**Project .csproj (here copied from Wiki)**
```
```
**Mapper interface**
```
[Mapper]
public interface IMyDataMapper : IMapper
{
}
```
**Mapper config**
```
internal class MyDataDTOMapperConfig : IRegister
{
public void Register(TypeAdapterConfig config)
{
config.NewConfig()
Map(dest => dest.Id, src => MapContext.Current.GetService().Encode(src.Id));
config.NewConfig()
.Map(dest => dest.Id, src => MapContext.Current.GetService().DecodeSingle(src.Id));
}
}
```
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.