public override int ToInt32() { if (_dataType == ODataType.Unknown) { if (_type.Equals(typeof(bool))) { _dataType = ODataType.Boolean; } else if (_type.Equals(typeof(char))) { _dataType = ODataType.Char; } else if (_type.Equals(typeof(byte))) { _dataType = ODataType.Byte; } else if (_type.Equals(typeof(sbyte))) { _dataType = ODataType.Short; } else if (_type.Equals(typeof(short))) { _dataType = ODataType.Short; } else if (_type.Equals(typeof(ushort))) { _dataType = ODataType.Integer; } else if (_type.Equals(typeof(int))) { _dataType = ODataType.Integer; } else if (_type.Equals(typeof(uint))) { _dataType = ODataType.Long; } else if (_type.Equals(typeof(long))) { _dataType = ODataType.Long; } else if (_type.Equals(typeof(ulong))) { _dataType = ODataType.Long; } else if (_type.Equals(typeof(float))) { _dataType = ODataType.Float; } else if (_type.Equals(typeof(double))) { _dataType = ODataType.Double; } else if (_type.Equals(typeof(decimal))) { _dataType = ODataType.Decimal; } else if (_type.Equals(typeof(string))) { _dataType = ODataType.String; } else if (_type.Equals(typeof(DateTime))) { _dataType = ODataType.DateTime; } else if (_type.Implements(typeof(IIdentifiable))) { _dataType = ODataType.Link; } else if (_type.IsEnum) { _dataType = ODataType.Integer; } else if (_type.IsArray) { if (_type.GetElementType().IsValueType || _type.GetElementType() == typeof(string)) { _dataType = ODataType.Binary; } else if (_type.GetElementType().Implements(typeof(IIdentifiable))) { _dataType = ODataType.LinkSet; } } else if (_type.Implements(typeof(IEnumerable<>))) { var elementType = _type.GetGenericArguments()[0]; if (elementType.IsValueType || elementType == typeof(string)) { _dataType = ODataType.Binary; } else if (elementType.Implements(typeof(IIdentifiable))) { _dataType = ODataType.LinkSet; } } } return (int)_dataType; }
public OStorageType(ODataType dataType) { ToInt32(); _dataType = dataType; }