0

I am trying to map a class that has a property that has a circle relationship with another class. These are the three classes:

[DataContract]
public class ClaseTest2
{
    [DataMember(Order = 1)]
    public ClaseTest3 Clase3 {get; set; }
}


[DataContract]
public class ClaseTest3
{
    [DataMember(Order = 1)]
    public ClaseTest2 Clase2 { get; set; }
}



[DataContract]
public class ClaseTest4
{
    public ClaseTest4()
    {
        ClaseTest2 miClase2 = new ClaseTest2();
        ClaseTest3 miClase3 = new ClaseTest3(); 
        miClase2.Clase3 = miClase3;
        miClase3.Clase2 = miClase2;
        this.Clase2 = miClase2;
    }

    [DataMember(Order = 1)]
    public ClaseTest2 Clase2;
}

And this is my Clase4DTO in which I want to map my Clase4:

[DataContract]
public class ClaseTest4DTO
{
    [DataMember(Order = 1)]
    public ClaseTest2DTO Clase2;
}

The only way that I am able to make it work it is using this way:

TypeAdapterConfig<ClaseTest4, ClaseTest4DTO> .NewConfig().MaxDepth(4);

ClaseTest4 miClaseTest4 = new ClaseTest4();

ClaseTest4DTO miClase4DTO = miClaseTest4.Adapt<ClaseTest4DTO>();

But I wouldn't to try another ways, because here I am setting the depth of the mapping, but I would like to know to avoid this because it depends on the result of a query to entity core.

In the documentation there are another ways, but in all of these cases I get a stack overflow exception.

The others ways that I have tried are:

TypeAdapterConfig<ClaseTest4, ClaseTest4DTO>.NewConfig().PreserveReference(false);  //I have tried with true with the same result

Or

TypeAdapterConfig<ClaseTest4, ClaseTest4DTO>.NewConfig(.ShallowCopyForSameType(true);
Álvaro García
  • 18,114
  • 30
  • 102
  • 193
  • Hmm, to fix cyclic references, I would actually propose `.PreserveReference(true);`. Why did you try `false`? (also see [the docs](https://github.com/MapsterMapper/Mapster/wiki/Object-references)) – JHBonarius Sep 20 '22 at 08:31
  • I have tried with true too, but the result is the same, stackoverflow. – Álvaro García Sep 20 '22 at 09:47

0 Answers0