Ejemplo n.º 1
0
        public static object BytesToEnum(byte[] b, Type t)
        {
            SafePtr sp = b;
            int     x  = Blob.BlobTypeSize(Blob.TypeToBlobType(t.GetEnumUnderlyingType()));

            switch (x)
            {
            case 1:
            {
                if (Native.Unsigned(t))
                {
                    return(Enum.ToObject(t, sp[0L]));
                }
                else
                {
                    return(Enum.ToObject(t, sp.get_SByteAt(0L)));
                }

                break;
            }

            case 2:
            {
                if (Native.Unsigned(t))
                {
                    return(Enum.ToObject(t, sp.get_UShortAt(0L)));
                }
                else
                {
                    return(Enum.ToObject(t, sp.get_ShortAt(0L)));
                }

                break;
            }

            case 4:
            {
                if (Native.Unsigned(t))
                {
                    return(Enum.ToObject(t, sp.get_UIntegerAt(0L)));
                }
                else
                {
                    return(Enum.ToObject(t, sp.get_IntegerAt(0L)));
                }

                break;
            }

            case 8:
            {
                if (Native.Unsigned(t))
                {
                    return(Enum.ToObject(t, sp.get_ULongAt(0L)));
                }
                else
                {
                    return(Enum.ToObject(t, sp.get_LongAt(0L)));
                }

                break;
            }
            }

            return(null);
        }