private static object ResolverValueDataTypeMap(EValueDataType valueType, object resolverValue)
        {
            // TODO: handle all cases...
            object o = resolverValue;

            switch (valueType)
            {
            case EValueDataType.Boolean:
                o = Convert.ToBoolean(resolverValue);
                break;

            case EValueDataType.Int:
                o = int.Parse(resolverValue.ToString());
                break;

            case EValueDataType.Byte:
                o = byte.Parse(resolverValue.ToString());
                break;

            case EValueDataType.DateTime:
                o = DateTime.Parse(resolverValue.ToString());
                break;

            case EValueDataType.Date:
                o = DateTime.Parse(resolverValue.ToString()).Date;
                break;
            }

            return(o);
        }
        public override string ToString()
        {
            EValueDataType datatype = (EValueDataType)(DataType & 0x00FFFF);
            EValueDataSize datasize = (EValueDataSize)(DataType & 0xFF0000);

            return($"<{_ValTypeString()} [{ValueType.ToString()}] ({datatype.ToString()},{datasize.ToString()})>");
        }
 /// <summary>
 /// Constructs parameter value of value type (non-literal)
 /// </summary>
 /// <param name="value"></param>
 /// <param name="datatype"></param>
 /// <param name="datasize"></param>
 /// <param name="size"></param>
 public ParameterResolverValue(
     object value,
     EValueDataType datatype,
     EValueDataSize datasize = EValueDataSize.Normal,
     uint reserved           = 0,
     uint size = 0)
 {
     Value    = value;
     DataType = (uint)datatype | (uint)datasize | reserved;
     if (value is ICollection && reserved == 0 && (DataType & (uint)EValueDataType.AdvancedMask) == 0)
     {
         DataType |= (uint)EValueDataType.Collection;
     }
     DataSize  = size;
     ValueType = EResolverValueType.ValueType;
 }