MapsterMapper/Mapster

mapster tool generates non-public interface method/property implementation

Ouverte

#399 ouverte le 5 janv. 2022

 (1 commentaire) (0 réaction) (1 personne assignée)C# (312 forks)batch import
bughelp wanted

Métriques du dépôt

Stars
 (3 995 étoiles)
Métriques de merge PR
 (Merge moyen 12j 15h) (10 PRs mergées en 30 j)

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

Guide contributeur