Let's imagine the following entity:
public class Entity
{
public int Id { get; set; }
public int Prop { get; set; }
}
and the following mapping class:
[Mapper]
public static class Mapper
{
// 1
public static partial Entity Clone(this Entity source);
// 2
[MapperIgnoreSource(nameof(Entity.Id))]
[MapperIgnoreTarget(nameof(Entity.Id))]
public static partial Entity CloneWithoutId(this Entity source);
}
Actual relevant generated code
Both (1) and (2) methods after generation look in the same way. Attributes on the second method are totally ignored. Both methods return the same instance, their code looks like this:
[global::System.CodeDom.Compiler.GeneratedCode("Riok.Mapperly", "4.2.1.0")]
public static partial global::MyNameSpace.Entity CloneWithoutId(this global::MyNameSpace.Entity source)
{
return source;
}
Expected relevant generated code
Expected behaviour: at least the second method returns a new instance of Entity, something like this:
[global::System.CodeDom.Compiler.GeneratedCode("Riok.Mapperly", "4.2.1.0")]
public static partial global::MyNameSpace.Entity CloneWithoutId(this global::MyNameSpace.Entity source)
{
return new Entity
{
Prop = source.Prop,
};
}
Environment (please complete the following information):
- Mapperly Version: 4.2.1
- Nullable reference types: enabled
- .NET Version: 9.0.302
- Target Framework: net9.0
- Compiler Version: 4.14.0-3.25279.5 (995f12b6)
- C# Language Version: 13.0
- IDE: Rider 2025.1.3
- OS: Win10
Let's imagine the following entity:
and the following mapping class:
Actual relevant generated code
Both (1) and (2) methods after generation look in the same way. Attributes on the second method are totally ignored. Both methods return the same instance, their code looks like this:
Expected relevant generated code
Expected behaviour: at least the second method returns a new instance of
Entity, something like this:Environment (please complete the following information):