You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Cannot map properties that have differt names and init access modifier #656
Hi,
I have a problem with version 7.4. If I want to map two properties with different names and the destination has a different name and the init modifier, Mapster throws a NullReferenceException. This happens when in the configuration of Mapster I set PreserveReference to true.
Here's the code
{
public Mapper Mapper { get; }
public MapsterTest()
{
var config = new TypeAdapterConfig();
config.Default.Settings.PreserveReference = true;
config.Scan(Assembly.GetAssembly(typeof(MapsterTest)));
config.Compile();
Mapper = new Mapper(config);
}
}
internal class MyClass
{
public int MyProperty { get; set; }
}
internal class DtoClass
{
public int MyPropertyDto { get; init; }
}
internal class Register : IRegister
{
void IRegister.Register(TypeAdapterConfig config)
{
config.NewConfig<MyClass, DtoClass>()
.Map(x => x.MyPropertyDto, x=> x.MyProperty);
}
}
And here's the mapping
var from = new MyClass { MyProperty = 1};
var to = mapster.Mapper.Map<DtoClass>(from);
(The problem does not manifest if the properties have the same name or another modifier (set; or private set;)
This code works fine with version 7.3
In my case similar regression between 7.4.0 and 7.3.0 (Mapster throws a NullReferenceException) is not related to PreserveReference. It's about init only properties, when mapping to target object.
Below code works fine with Mapster 7.3.0, but doesn't work with Mapster 7.4.0.
Hello @Mat3oo, @andrerav
I checked my fix. The bug indicated by @Mat3oo persists.
The place of origin itself is most likely identified correctly.
But the created working code and the created non-working code, at first glance, do not make sense and both should not work))
In order to identify issues that are still active, we are closing issues that we believe are either resolved or are dormant. If your issue is still active then please reopen. Thanks.
Activity
DocSvartz commentedon Nov 12, 2023
linked #422
@nicoarm93 @andrerav location of this bug found )
PR with fix is open #658
Mat3oo commentedon Dec 8, 2023
In my case similar regression between 7.4.0 and 7.3.0 (Mapster throws a NullReferenceException) is not related to
PreserveReference. It's aboutinitonly properties, when mapping to target object.Below code works fine with
Mapster 7.3.0, but doesn't work withMapster 7.4.0.DocSvartz commentedon Dec 8, 2023
Hello @Mat3oo, @andrerav
I checked my fix. The bug indicated by @Mat3oo persists.
The place of origin itself is most likely identified correctly.
But the created working code and the created non-working code, at first glance, do not make sense and both should not work))
Working Code :
Non-working code (throws a NullReferenceException):
fix MapsterMapper#656
Merge pull request #745 from SimTsai/master
stagep commentedon Jan 7, 2025
In order to identify issues that are still active, we are closing issues that we believe are either resolved or are dormant. If your issue is still active then please reopen. Thanks.