DestinationTransform.EmptyCollectionIfNull overrides explicit null mapping
Nadie ha tomado este issue todavía.
- #960 de @wyf027 — cerrado sin fusionar
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 68/100
Línea de trabajo
Comienza con el registro de DestinationTransform.EmptyCollectionIfNull y el caso de DestinationTransformTests mostrados en el issue, y luego reproduce el comportamiento usando el TypeAdapterConfig y los tipos Foo/FooDto proporcionados. Rastrea cuándo se ejecuta la transformación de destino global con respecto al resultado explícito de .Map(...); se considera terminado cuando el test pasa manteniendo foo.Strings en null.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
When DestinationTransform.EmptyCollectionIfNull is configured globally via config.Default, it still overrides explicitly defined mappings that return null.
This behavior is unexpected because explicit mappings (via .Map(...)) should take precedence over global/default transforms.
- Mapster version: 10.0.8-pre06
- .NET version: net10.0
class FooDto
{
public string[]? Strings { get; set; }
}
record Foo(string?[] Strings);
public class DestinationTransformTests
{
[Fact]
public void ExplicitNullMapping_ShouldNotBeOverridden_ByDefaultEmptyCollectionTransform()
{
// Configure
var config = new TypeAdapterConfig();
config.Default
.AddDestinationTransform(DestinationTransform.EmptyCollectionIfNull);
config.NewConfig<Foo, FooDto>()
.Map(d => d.Strings, _ => (string[]?)null);
// Arrange
var fooDto = new Foo([]);
// Act
var foo = fooDto.Adapt<FooDto>(config);
// Assert
foo.Strings.ShouldBeNull();
}
}
Expected behavior
The explicit mapping:
.Map(d => d.Strings, _ => (string[]?)null)
should be respected, resulting in foo.Strings == null.
Actual behavior
foo.Strings is transformed into an empty array, meaning that EmptyCollectionIfNull is applied after the explicit mapping and overrides it.
Notes
The transform is registered on config.Default, not per-type.
This suggests that global destination transforms are applied at a stage where they override even explicit mapping results.
This makes it impossible to explicitly map a collection property to null when EmptyCollectionIfNull is enabled globally.
- Lenguaje dominante
- C#
- Estrellas
- 5.2k
- Forks
- 409
- Merge medio
- 3 d 4 h
- PR fusionados (30 d)
- 3
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de MapsterMapper/Mapster
-
.NET MatrixAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
MapsterMapper/Mapster#1003 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 58/100
MapsterMapper/Mapster#1024 · 1 comentario ·
-
[Mapster Tool] Add support for global:: to disambiguate type names in generated mappersPosiblemente ocupada @DocSvartz la tomó hace 1 día. Abiertoimprovement
Dificultad 3/5 1-2 días Aptitud para principiantes 65/100
MapsterMapper/Mapster#1020 · 3 comentarios ·
-
Mapster.Tool - PropertySettingBuilder.Map(member, mapFunc, targetPropertyName) method is not working as expected!Posiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
MapsterMapper/Mapster#1017 · 6 comentarios ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 57/100
MapsterMapper/Mapster#1007 · 5 comentarios ·
Todos los issues de MapsterMapper/Mapster
Issues similares
-
Format request: .wbpzAbiertoenhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
KnifeLemon/Filee#294 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
gavin-wolfe/wolfden#104 ·
Los mantenedores suelen responder en 1 día
-
[BUG] Still libmicrohttpd dependency is not removed properly from External-Dependency-Info.txt fileAbiertotype/bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
area:framework
Dificultad 1/5 1-3 horas Aptitud para principiantes 72/100
nunit/docs#1262 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
[辞書] かんそうりつ->乾燥率Abierto辞書
Dificultad 1/5 Menos de una hora Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día