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);
     }
 }
Ejemplo n.º 3
0
        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));
        }