public void Repro64_v2_ReadonlyStructs_Ctor() { var config = new SerializerConfig { DefaultTargets = TargetMember.AllFields, PreserveReferences = false }; config.Advanced.ReadonlyFieldHandling = ReadonlyFieldHandling.ForcedOverwrite; config.Advanced.SkipCompilerGeneratedFields = false; int nCtor=0; int nUninit=0; config.OnConfigNewType = tc => { var ctor = tc.Type.GetConstructors(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).FirstOrDefault(); if (ctor != null) { tc.TypeConstruction = TypeConstruction.ByConstructor(ctor); nCtor++; } else { tc.TypeConstruction = TypeConstruction.ByUninitialized(); nUninit++; } }; var ceras = new CerasSerializer(config); var obj = new NullableWrapper(new Test { Value = 2.34M, SubStruct = new SubStruct(new NameAge("riki", 5), 6, 7) }); var clone = ceras.Advanced.Clone(obj); Assert.Equal(7, nCtor); Assert.Equal(1, nUninit); Assert.Equal(obj.TestStruct.Value.Value, clone.TestStruct.Value.Value); Assert.Equal(obj.TestStruct.Value.SubStruct.Num, clone.TestStruct.Value.SubStruct.Num); Assert.Equal(obj.TestStruct.Value.SubStruct.NameAge.Age, clone.TestStruct.Value.SubStruct.NameAge.Age); Assert.Equal(obj.TestStruct.Value.SubStruct.NameAge.Name, clone.TestStruct.Value.SubStruct.NameAge.Name); }