IsDefined() static private method

static private IsDefined ( Type type ) : bool
type Type
return bool
        internal static Attribute GetCustomAttribute(RuntimeType type)
        {
            if (!StructLayoutAttribute.IsDefined(type))
            {
                return(null);
            }
            int            num            = 0;
            int            size           = 0;
            LayoutKind     layoutKind     = LayoutKind.Auto;
            TypeAttributes typeAttributes = type.Attributes & TypeAttributes.LayoutMask;

            if (typeAttributes != TypeAttributes.NotPublic)
            {
                if (typeAttributes != TypeAttributes.SequentialLayout)
                {
                    if (typeAttributes == TypeAttributes.ExplicitLayout)
                    {
                        layoutKind = LayoutKind.Explicit;
                    }
                }
                else
                {
                    layoutKind = LayoutKind.Sequential;
                }
            }
            else
            {
                layoutKind = LayoutKind.Auto;
            }
            CharSet charSet = CharSet.None;

            typeAttributes = (type.Attributes & TypeAttributes.StringFormatMask);
            if (typeAttributes != TypeAttributes.NotPublic)
            {
                if (typeAttributes != TypeAttributes.UnicodeClass)
                {
                    if (typeAttributes == TypeAttributes.AutoClass)
                    {
                        charSet = CharSet.Auto;
                    }
                }
                else
                {
                    charSet = CharSet.Unicode;
                }
            }
            else
            {
                charSet = CharSet.Ansi;
            }
            type.GetRuntimeModule().MetadataImport.GetClassLayout(type.MetadataToken, out num, out size);
            if (num == 0)
            {
                num = 8;
            }
            return(new StructLayoutAttribute(layoutKind, num, size, charSet));
        }
Beispiel #2
0
        internal static Attribute GetCustomAttribute(RuntimeType type)
        {
            if (!StructLayoutAttribute.IsDefined(type))
            {
                return((Attribute)null);
            }
            int        packSize   = 0;
            int        classSize  = 0;
            LayoutKind layoutKind = LayoutKind.Auto;

            switch (type.Attributes & TypeAttributes.LayoutMask)
            {
            case TypeAttributes.NotPublic:
                layoutKind = LayoutKind.Auto;
                break;

            case TypeAttributes.SequentialLayout:
                layoutKind = LayoutKind.Sequential;
                break;

            case TypeAttributes.ExplicitLayout:
                layoutKind = LayoutKind.Explicit;
                break;
            }
            CharSet charSet = CharSet.None;

            switch (type.Attributes & TypeAttributes.StringFormatMask)
            {
            case TypeAttributes.NotPublic:
                charSet = CharSet.Ansi;
                break;

            case TypeAttributes.UnicodeClass:
                charSet = CharSet.Unicode;
                break;

            case TypeAttributes.AutoClass:
                charSet = CharSet.Auto;
                break;
            }
            type.GetRuntimeModule().MetadataImport.GetClassLayout(type.MetadataToken, out packSize, out classSize);
            if (packSize == 0)
            {
                packSize = 8;
            }
            return((Attribute) new StructLayoutAttribute(layoutKind, packSize, classSize, charSet));
        }