コード例 #1
0
 public override object[] GetCustomAttributes(bool inherit)
 {
     if (m_customAttributes == null)
     {
         m_customAttributes = MetadataHelperFunctionsExtensions.GetDebugAttributes(m_importer, m_propertyToken);
     }
     return(m_customAttributes);
 }
コード例 #2
0
        internal MetadataMethodInfo(CorApi.Portable.IMetaDataImport importer, int methodToken, Instantiation instantiation)
        {
            unsafe
            {
                if (!importer.IsValidToken(methodToken))
                {
                    throw new ArgumentException();
                }

                m_importer    = importer;
                m_methodToken = methodToken;

                int    size;
                int    pdwAttr;
                IntPtr ppvSigBlob;
                int    pulCodeRVA, pdwImplFlags;
                int    pcbSigBlob;

                m_importer.GetMethodProps(methodToken,
                                          out m_classToken,
                                          IntPtr.Zero,
                                          0,
                                          out size,
                                          out pdwAttr,
                                          out ppvSigBlob,
                                          out pcbSigBlob,
                                          out pulCodeRVA,
                                          out pdwImplFlags);



                var szMethodName = stackalloc char[size];


                m_importer.GetMethodProps(methodToken,
                                          out m_classToken,
                                          (IntPtr)szMethodName,
                                          size,
                                          out size,
                                          out pdwAttr,
                                          out ppvSigBlob,
                                          out pcbSigBlob,
                                          out pulCodeRVA,
                                          out pdwImplFlags);

                // [Xamarin] Expression evaluator.
                CorCallingConvention callingConv;
                MetadataHelperFunctionsExtensions.ReadMethodSignature(importer, instantiation, ref ppvSigBlob, out callingConv, out m_retType, out m_argTypes, out m_sentinelIndex);
                m_name             = new string(szMethodName, 0, size - 1);
                m_methodAttributes = (MethodAttributes)pdwAttr;
            }
        }
コード例 #3
0
        internal MetadataFieldInfo(CorApi.Portable.IMetaDataImport importer, int fieldToken, MetadataType declaringType)
        {
            unsafe {
                m_importer      = importer;
                m_fieldToken    = fieldToken;
                m_declaringType = declaringType;

                // Initialize
                int    mdTypeDef;
                int    pchField, pcbSigBlob, pdwCPlusTypeFlab, pcchValue, pdwAttr;
                IntPtr ppvSigBlob;
                IntPtr ppvRawValue;
                m_importer.GetFieldProps(m_fieldToken,
                                         out mdTypeDef,
                                         IntPtr.Zero,
                                         0,
                                         out pchField,
                                         out pdwAttr,
                                         out ppvSigBlob,
                                         out pcbSigBlob,
                                         out pdwCPlusTypeFlab,
                                         out ppvRawValue,
                                         out pcchValue
                                         );

                var szField = stackalloc char[pchField];

                m_importer.GetFieldProps(m_fieldToken,
                                         out mdTypeDef,
                                         (IntPtr)szField,
                                         pchField,
                                         out pchField,
                                         out pdwAttr,
                                         out ppvSigBlob,
                                         out pcbSigBlob,
                                         out pdwCPlusTypeFlab,
                                         out ppvRawValue,
                                         out pcchValue
                                         );
                m_fieldAttributes = (FieldAttributes)pdwAttr;
                m_name            = new string(szField, 0, pchField - 1);

                // Get the values for static literal fields with primitive types
                FieldAttributes staticLiteralField = FieldAttributes.Static | FieldAttributes.HasDefault | FieldAttributes.Literal;
                if ((m_fieldAttributes & staticLiteralField) == staticLiteralField)
                {
                    m_value = ParseDefaultValue(declaringType, ppvSigBlob, ppvRawValue, pcchValue);
                }
                // [Xamarin] Expression evaluator.
                MetadataHelperFunctionsExtensions.GetCustomAttribute(m_importer, m_fieldToken, typeof(DebuggerBrowsableAttribute));
            }
        }
コード例 #4
0
        internal MetadataFieldInfo(IMetadataImport importer, int fieldToken, MetadataType declaringType)
        {
            m_importer      = importer;
            m_fieldToken    = fieldToken;
            m_declaringType = declaringType;

            // Initialize
            int    mdTypeDef;
            int    pchField, pcbSigBlob, pdwCPlusTypeFlab, pcchValue, pdwAttr;
            IntPtr ppvSigBlob;
            IntPtr ppvRawValue;

            m_importer.GetFieldProps(m_fieldToken,
                                     out mdTypeDef,
                                     null,
                                     0,
                                     out pchField,
                                     out pdwAttr,
                                     out ppvSigBlob,
                                     out pcbSigBlob,
                                     out pdwCPlusTypeFlab,
                                     out ppvRawValue,
                                     out pcchValue
                                     );

            StringBuilder szField = new StringBuilder(pchField);

            m_importer.GetFieldProps(m_fieldToken,
                                     out mdTypeDef,
                                     szField,
                                     szField.Capacity,
                                     out pchField,
                                     out pdwAttr,
                                     out ppvSigBlob,
                                     out pcbSigBlob,
                                     out pdwCPlusTypeFlab,
                                     out ppvRawValue,
                                     out pcchValue
                                     );
            m_fieldAttributes = (FieldAttributes)pdwAttr;
            m_name            = szField.ToString();

            // Get the values for static literal fields with primitive types
            FieldAttributes staticLiteralField = FieldAttributes.Static | FieldAttributes.HasDefault | FieldAttributes.Literal;

            if ((m_fieldAttributes & staticLiteralField) == staticLiteralField)
            {
                m_value = ParseDefaultValue(declaringType, ppvSigBlob, ppvRawValue, pcchValue);
            }
            // [Xamarin] Expression evaluator.
            MetadataHelperFunctionsExtensions.GetCustomAttribute(m_importer, m_fieldToken, typeof(DebuggerBrowsableAttribute));
        }
コード例 #5
0
        internal MetadataMethodInfo(IMetadataImport importer, int methodToken)
        {
            if (!importer.IsValidToken((uint)methodToken))
            {
                throw new ArgumentException();
            }

            m_importer    = importer;
            m_methodToken = methodToken;

            int    size;
            uint   pdwAttr;
            IntPtr ppvSigBlob;
            uint   pulCodeRVA, pdwImplFlags;
            uint   pcbSigBlob;

            m_importer.GetMethodProps((uint)methodToken,
                                      out m_classToken,
                                      null,
                                      0,
                                      out size,
                                      out pdwAttr,
                                      out ppvSigBlob,
                                      out pcbSigBlob,
                                      out pulCodeRVA,
                                      out pdwImplFlags);

            StringBuilder szMethodName = new StringBuilder(size);

            m_importer.GetMethodProps((uint)methodToken,
                                      out m_classToken,
                                      szMethodName,
                                      szMethodName.Capacity,
                                      out size,
                                      out pdwAttr,
                                      out ppvSigBlob,
                                      out pcbSigBlob,
                                      out pulCodeRVA,
                                      out pdwImplFlags);

            // [Xamarin] Expression evaluator.
            CorCallingConvention callingConv;

            MetadataHelperFunctionsExtensions.ReadMethodSignature(importer, ref ppvSigBlob, out callingConv, out m_retType, out m_argTypes);
            m_name             = szMethodName.ToString();
            m_methodAttributes = (MethodAttributes)pdwAttr;
        }
コード例 #6
0
        internal MetadataPropertyInfo(IMetadataImport importer, int propertyToken, MetadataType declaringType)
        {
            m_importer      = importer;
            m_propertyToken = propertyToken;
            m_declaringType = declaringType;

            int    mdTypeDef;
            int    pchProperty;
            int    pdwPropFlags;
            IntPtr ppvSig;
            int    pbSig;
            int    pdwCPlusTypeFlag;
            IntPtr ppDefaultValue;
            int    pcchDefaultValue;
            int    rmdOtherMethod;
            int    pcOtherMethod;

            m_importer.GetPropertyProps(
                m_propertyToken,
                out mdTypeDef,
                null,
                0,
                out pchProperty,
                out pdwPropFlags,
                out ppvSig,
                out pbSig,
                out pdwCPlusTypeFlag,
                out ppDefaultValue,
                out pcchDefaultValue,
                out m_pmdSetter,
                out m_pmdGetter,
                out rmdOtherMethod,
                0,
                out pcOtherMethod);

            StringBuilder szProperty = new StringBuilder(pchProperty);

            m_importer.GetPropertyProps(
                m_propertyToken,
                out mdTypeDef,
                szProperty,
                pchProperty,
                out pchProperty,
                out pdwPropFlags,
                out ppvSig,
                out pbSig,
                out pdwCPlusTypeFlag,
                out ppDefaultValue,
                out pcchDefaultValue,
                out m_pmdSetter,
                out m_pmdGetter,
                out rmdOtherMethod,
                0,
                out pcOtherMethod);

            m_propAttributes = (PropertyAttributes)pdwPropFlags;
            m_name           = szProperty.ToString();
            MetadataHelperFunctionsExtensions.GetCustomAttribute(importer, propertyToken, typeof(System.Diagnostics.DebuggerBrowsableAttribute));

            if (!m_importer.IsValidToken((uint)m_pmdGetter))
            {
                m_pmdGetter = 0;
            }

            if (!m_importer.IsValidToken((uint)m_pmdSetter))
            {
                m_pmdSetter = 0;
            }
        }
コード例 #7
0
        internal MetadataPropertyInfo(CorApi.Portable.IMetaDataImport importer, int propertyToken, MetadataType declaringType)
        {
            unsafe
            {
                m_importer      = importer;
                m_propertyToken = propertyToken;
                m_declaringType = declaringType;

                int    mdTypeDef;
                int    pchProperty;
                int    pdwPropFlags;
                IntPtr ppvSig;
                int    pbSig;
                int    pdwCPlusTypeFlag;
                IntPtr ppDefaultValue;
                int    pcchDefaultValue;
                int[]  rmdOtherMethod = new int[0];
                int    pcOtherMethod;

                m_importer.GetPropertyProps(
                    m_propertyToken,
                    out mdTypeDef,
                    IntPtr.Zero,
                    0,
                    out pchProperty,
                    out pdwPropFlags,
                    out ppvSig,
                    out pbSig,
                    out pdwCPlusTypeFlag,
                    out ppDefaultValue,
                    out pcchDefaultValue,
                    out m_pmdSetter,
                    out m_pmdGetter,
                    rmdOtherMethod,
                    0,
                    out pcOtherMethod);

                var szProperty = stackalloc char[pchProperty];
                m_importer.GetPropertyProps(
                    m_propertyToken,
                    out mdTypeDef,
                    (IntPtr)szProperty,
                    pchProperty,
                    out pchProperty,
                    out pdwPropFlags,
                    out ppvSig,
                    out pbSig,
                    out pdwCPlusTypeFlag,
                    out ppDefaultValue,
                    out pcchDefaultValue,
                    out m_pmdSetter,
                    out m_pmdGetter,
                    rmdOtherMethod,
                    0,
                    out pcOtherMethod);

                m_propAttributes = (PropertyAttributes)pdwPropFlags;
                m_name           = new string(szProperty, 0, pchProperty - 1);
            }

            MetadataHelperFunctionsExtensions.GetCustomAttribute(importer, propertyToken, typeof(System.Diagnostics.DebuggerBrowsableAttribute));

            if (!m_importer.IsValidToken(m_pmdGetter))
            {
                m_pmdGetter = 0;
            }

            if (!m_importer.IsValidToken(m_pmdSetter))
            {
                m_pmdSetter = 0;
            }
        }