Пример #1
0
        public static Type GetDataType(DataType dataType)
        {
            Type slotType = DataTypeUtils.GetSlotDataType(dataType);

            if (dataType.IsSlotes)
            {
                return(slotType);
            }

            return(typeof(Data <>).MakeGenericType(slotType));
        }
Пример #2
0
        public static Type GetSlotDataType(DataType dataType)
        {
            if (dataType.IsPrimitive)
            {
                return(dataType.PrimitiveType);
            }

            Type[] slotTypes = new Type[dataType.TypesCount];

            for (int i = 0; i < slotTypes.Length; i++)
            {
                slotTypes[i] = DataTypeUtils.GetSlotDataType(dataType[i]);
            }

            if (dataType.IsSlotes)
            {
                return(GetDataType(slotTypes));
            }

            if (dataType.IsArray)
            {
                return(slotTypes[0].MakeArrayType());
            }

            if (dataType.IsList)
            {
                return(typeof(List <>).MakeGenericType(slotTypes[0]));
            }

            if (dataType.IsDictionary)
            {
                return(typeof(Dictionary <,>).MakeGenericType(slotTypes[0], slotTypes[1]));
            }

            if (dataType.IsKeyValuePair)
            {
                return(typeof(KeyValuePair <,>).MakeGenericType(slotTypes[0], slotTypes[1]));
            }

            throw new NotSupportedException(dataType.ToString());
        }