public override void WriteElement <T>(string name, bool elementIsPrimitive, T element) { if (elementIsPrimitive) { var elementDTO = _dto.CreateAndPush(name); elementDTO.SetValue(element); } else { var elementType = typeof(T); if (elementType.IsEnum) { var underlyingType = Enum.GetUnderlyingType(elementType); var value = DataUtil.ToValue(element, underlyingType); var elementDTO = _dto.CreateAndPush(name); elementDTO.SetValue(value); } else { string schemaCode = _schemaCodes.GetSchemaCode(name, () => typeof(T)); var elementDTO = DTObjectMapper.Instance.Load(schemaCode, element, _dto.IsPinned); _dto.Push(name, elementDTO); } } }
public override void WriteElement <T>(string name, bool elementIsPrimitive, T element) { if (elementIsPrimitive) { var elementDTO = _dto.CreateAndPush(name); elementDTO.SetValue(element); } else { string schemaCode = _schemaCodes.GetSchemaCode(name, () => typeof(T)); var elementDTO = DTObjectMapper.Instance.Load(schemaCode, element, _dto.IsPinned); _dto.Push(name, elementDTO); } }
public override T ReadElement <T>(string name, int index) { var dtoList = _dto.GetList(name, false); if (dtoList == null) { return(default(T)); } var dtoElement = dtoList[index]; if (dtoElement.IsSingleValue) { return(dtoElement.GetValue <T>()); } var elementType = typeof(T); string schemaCode = _schemaCodes.GetSchemaCode(name, () => elementType); return((T)DTObjectMapper.Instance.Save(elementType, schemaCode, dtoElement)); }