Mapster: I am not able to make it work when I have circle references

Viewed 24

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);
0 Answers
Related