MapsterMapper/Mapster

mapster tool generates non-public interface method/property implementation

Aberta

#399 aberto em 5 de jan. de 2022

 (1 comentário) (0 reação) (1 responsável)C# (312 forks)batch import
bughelp wanted

Métricas do repositório

Stars
 (3.995 estrelas)
Métricas de merge de PR
 (Mesclagem média 12d 15h) (10 fundiu PRs em 30d)

Description

When generating mapper from interface containing mapping method/property with internal classes mapster tool generates internal implementation of this method/property

  • Mapster.Core v1.2.0
  • mapster.tool v8.2.1
  • executed on net5
[Mapper(IsInternal = true)]
internal interface IMyMappers
{
    PocoDto Map(Poco source);

    Expression<Func<Poco, PocoDto>> ProjectToDto { get; }
}

public record Poco(string Name, string Description);

internal record PocoDto(string Name, string Description);

Generated mapper class is:

internal partial class MyMappers : IMyMappers
{
    internal Expression<Func<Poco, PocoDto>> ProjectToDto => p1 => new PocoDto(p1.Name, p1.Description);
    internal PocoDto Map(Poco p2)
    {
        return p2 == null ? null : new PocoDto(p2.Name, p2.Description);
    }
}

CS0737: 'MyMappers.Map(Poco)' cannot implement an interface member because it is not public. CS0737: 'MyMappers.ProjectToDto' cannot implement an interface member because it is not public.

Maybe internal class with proper implementations should be generated even in case MapperAttribute.IsInternal hasn't been specified

Guia do colaborador