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);