Exemplo n.º 1
0
        private void InitInfo()
        {
            accessorDict  = new Dictionary <string, Accessor>(Properties.Length);
            FieldAttrDict = new Dictionary <PropertyInfo, OrmFieldAttribute>(Properties.Length);
            foreach (var prop in Properties)
            {
                Accessor accessor = null;

                string propName = prop.Name.ToUpper();
                var    propType = prop.PropertyType;

                if (propType.IsEnum)
                {
                    propType = propType.GetEnumUnderlyingType();
                }
                if (typeof(string) == propType)
                {
                    accessor = new StringAccessor(prop);
                }
                else if (typeof(int) == propType)
                {
                    accessor = new IntAccessor(prop);
                }
                else if (typeof(int?) == propType)
                {
                    accessor = new IntNullableAccessor(prop);
                }
                else if (typeof(DateTime) == propType)
                {
                    accessor = new DateTimeAccessor(prop);
                }
                else if (typeof(DateTime?) == propType)
                {
                    accessor = new DateTimeNullableAccessor(prop);
                }
                else if (typeof(long) == propType)
                {
                    accessor = new LongAccessor(prop);
                }
                else if (typeof(long?) == propType)
                {
                    accessor = new LongNullableAccessor(prop);
                }
                else if (typeof(float) == propType)
                {
                    accessor = new FloatAccessor(prop);
                }
                else if (typeof(float?) == propType)
                {
                    accessor = new FloatNullableAccessor(prop);
                }
                else if (typeof(double) == propType)
                {
                    accessor = new DoubleAccessor(prop);
                }
                else if (typeof(double?) == propType)
                {
                    accessor = new DoubleNullableAccessor(prop);
                }
                else if (typeof(Guid) == propType)
                {
                    accessor = new GuidAccessor(prop);
                }
                else if (typeof(Guid?) == propType)
                {
                    accessor = new GuidNullableAccessor(prop);
                }
                else if (typeof(short) == propType)
                {
                    accessor = new ShortAccessor(prop);
                }
                else if (typeof(short?) == propType)
                {
                    accessor = new ShortNullableAccessor(prop);
                }
                else if (typeof(byte) == propType)
                {
                    accessor = new ByteAccessor(prop);
                }
                else if (typeof(byte?) == propType)
                {
                    accessor = new ByteNullableAccessor(prop);
                }
                else if (typeof(char) == propType)
                {
                    accessor = new CharAccessor(prop);
                }
                else if (typeof(char?) == propType)
                {
                    accessor = new CharNullableAccessor(prop);
                }
                else if (typeof(decimal) == propType)
                {
                    accessor = new DecimalAccessor(prop);
                }
                else if (typeof(decimal?) == propType)
                {
                    accessor = new DecimalNullableAccessor(prop);
                }
                else if (typeof(byte[]) == propType)
                {
                    accessor = new ByteArrayAccessor(prop);
                }
                else if (typeof(bool) == propType)
                {
                    accessor = new BoolAccessor(prop);
                }
                else if (typeof(bool?) == propType)
                {
                    accessor = new BoolNullableAccessor(prop);
                }
                else if (typeof(TimeSpan) == propType)
                {
                    accessor = new TimeSpanAccessor(prop);
                }
                else if (typeof(TimeSpan?) == propType)
                {
                    accessor = new TimeSpanNullableAccessor(prop);
                }
                accessorDict[propName] = accessor;
                //自定义属性
                var customerAttributes = prop.GetCustomAttributes(typeof(OrmFieldAttribute), false);
                if (customerAttributes == null || customerAttributes.Length == 0)
                {
                    FieldAttrDict[prop] = null;
                }
                else
                {
                    FieldAttrDict[prop] = (OrmFieldAttribute)customerAttributes[0];
                }
            }
        }
Exemplo n.º 2
0
        private void InitInfo(Type modelType)
        {
            accessorDict = new Dictionary <string, Accessor>();
            var Properties = TypeCache.GetTable(modelType).Fields;

            foreach (var kv in Properties)
            {
                Accessor accessor = null;
                var      prop     = kv.GetPropertyInfo();
                string   propName = prop.Name.ToUpper();
                var      propType = prop.PropertyType;

                if (propType.IsEnum)
                {
                    propType = propType.GetEnumUnderlyingType();
                }
                if (typeof(string) == propType)
                {
                    accessor = new StringAccessor(prop);
                }
                else if (typeof(int) == propType)
                {
                    accessor = new IntAccessor(prop);
                }
                else if (typeof(int?) == propType)
                {
                    accessor = new IntNullableAccessor(prop);
                }
                else if (typeof(DateTime) == propType)
                {
                    accessor = new DateTimeAccessor(prop);
                }
                else if (typeof(DateTime?) == propType)
                {
                    accessor = new DateTimeNullableAccessor(prop);
                }
                else if (typeof(long) == propType)
                {
                    accessor = new LongAccessor(prop);
                }
                else if (typeof(long?) == propType)
                {
                    accessor = new LongNullableAccessor(prop);
                }
                else if (typeof(float) == propType)
                {
                    accessor = new FloatAccessor(prop);
                }
                else if (typeof(float?) == propType)
                {
                    accessor = new FloatNullableAccessor(prop);
                }
                else if (typeof(double) == propType)
                {
                    accessor = new DoubleAccessor(prop);
                }
                else if (typeof(double?) == propType)
                {
                    accessor = new DoubleNullableAccessor(prop);
                }
                else if (typeof(Guid) == propType)
                {
                    accessor = new GuidAccessor(prop);
                }
                else if (typeof(Guid?) == propType)
                {
                    accessor = new GuidNullableAccessor(prop);
                }
                else if (typeof(short) == propType)
                {
                    accessor = new ShortAccessor(prop);
                }
                else if (typeof(short?) == propType)
                {
                    accessor = new ShortNullableAccessor(prop);
                }
                else if (typeof(byte) == propType)
                {
                    accessor = new ByteAccessor(prop);
                }
                else if (typeof(byte?) == propType)
                {
                    accessor = new ByteNullableAccessor(prop);
                }
                else if (typeof(char) == propType)
                {
                    accessor = new CharAccessor(prop);
                }
                else if (typeof(char?) == propType)
                {
                    accessor = new CharNullableAccessor(prop);
                }
                else if (typeof(decimal) == propType)
                {
                    accessor = new DecimalAccessor(prop);
                }
                else if (typeof(decimal?) == propType)
                {
                    accessor = new DecimalNullableAccessor(prop);
                }
                else if (typeof(byte[]) == propType)
                {
                    accessor = new ByteArrayAccessor(prop);
                }
                else if (typeof(bool) == propType)
                {
                    accessor = new BoolAccessor(prop);
                }
                else if (typeof(bool?) == propType)
                {
                    accessor = new BoolNullableAccessor(prop);
                }
                else if (typeof(TimeSpan) == propType)
                {
                    accessor = new TimeSpanAccessor(prop);
                }
                else if (typeof(TimeSpan?) == propType)
                {
                    accessor = new TimeSpanNullableAccessor(prop);
                }
                accessorDict[propName] = accessor;
            }
        }
Exemplo n.º 3
0
        public Channel(IntermediateNode root)
        {
            //Fetch from nodes
            foreach (LeafNode channelSubNode in root)
            {
                if (channelSubNode.Name.Equals("header", StringComparison.OrdinalIgnoreCase))
                {
                    ReadHeader(channelSubNode);
                }
                else if (channelSubNode.Name.Equals("frames", StringComparison.OrdinalIgnoreCase))
                {
                    channelData = channelSubNode.ByteArrayData;
                }
            }
            FrameType frameType = FrameType.Float;

            QuaternionMethod = QuaternionMethod.Full;
            bool vec    = false;
            bool quat   = false;
            bool comp   = false;
            bool floats = false;

            switch (ChannelType)
            {
            case BIT_NORM:
            case 0x50:
            case 0x40:
                comp = true;
                break;

            case BIT_VEC:
            case 0x22:
                vec = true;
                break;

            case BIT_QUAT:
                quat = true;
                break;

            case BIT_VEC | BIT_QUAT:
                vec  = true;
                quat = true;
                break;

            case BIT_VEC | BIT_NORM:
            case BIT_VEC | 0x40:      //special case normal? unsure
                frameType        = FrameType.VecWithQuat;
                QuaternionMethod = QuaternionMethod.HalfAngle;
                vec  = true;
                comp = true;
                break;

            default:
                floats = true;
                break;
            }
            InterpretedType = frameType;
            if (Interval == -1)
            {
                Times   = new FloatAccessor(this, 0);
                stride += 4;
            }
            if (vec)
            {
                Positions = new Vector3Accessor(this, stride);
                stride   += 12;
            }
            if (quat)
            {
                Quaternions = new QuaternionAccessor(this, stride);
                stride     += 16;
            }
            if (comp)
            {
                Quaternions = new CompressedAccessor(this, stride);
                stride     += 6;
            }
            if (floats)
            {
                Angles  = new FloatAccessor(this, stride);
                stride += 4;
            }
        }