public override MethodInfo[] GetMethods(BindingFlags bindingAttr) { ArrayList al = new ArrayList(); IntPtr hEnum = new IntPtr(); int methodToken; try { while (true) { int size; m_importer.EnumMethods(ref hEnum, (int)m_typeToken, out methodToken, 1, out size); if (size == 0) { break; } // [Xamarin] Expression evaluator. var met = new MetadataMethodInfo(m_importer, methodToken); if (MetadataExtensions.TypeFlagsMatch(met.IsPublic, met.IsStatic, bindingAttr)) { al.Add(met); } } } finally { m_importer.CloseEnum(hEnum); } return((MethodInfo[])al.ToArray(typeof(MethodInfo))); }
public override MethodInfo GetSetMethod(bool nonPublic) { if (m_setter == null) { if (m_pmdSetter != 0) { m_setter = new MetadataMethodInfo(m_importer, m_pmdSetter); } } return(m_setter); }
public override MethodInfo GetSetMethod(bool nonPublic) { if (m_pmdSetter == 0) { return(null); } if (m_setter == null) { m_setter = new MetadataMethodInfo(m_importer, m_pmdSetter, Instantiation.Empty); } if (nonPublic || m_setter.IsPublic) { return(m_setter); } return(null); }
public override MethodInfo GetGetMethod(bool nonPublic) { if (m_pmdGetter == 0) { return(null); } if (m_getter == null) { m_getter = new MetadataMethodInfo(m_importer, m_pmdGetter); } if (nonPublic || m_getter.IsPublic) { return(m_getter); } return(null); }
public override MethodInfo GetSetMethod(bool nonPublic) { if (m_pmdSetter == 0) { return(null); } if (m_setter == null) { m_setter = new MetadataMethodInfo(m_importer, m_pmdSetter, Instantiation.Create(m_declaringType.GenericTypeArguments)); } if (nonPublic || m_setter.IsPublic) { return(m_setter); } return(null); }
public override MethodInfo GetSetMethod (bool nonPublic) { if (m_pmdSetter == 0) return null; if (m_setter == null) m_setter = new MetadataMethodInfo (m_importer, m_pmdSetter); if (nonPublic || m_setter.IsPublic) return m_setter; return null; }
public override MethodInfo GetSetMethod (bool nonPublic) { if (m_setter == null) { if (m_pmdSetter != 0) m_setter = new MetadataMethodInfo (m_importer, m_pmdSetter); } return m_setter; }
internal MetadataPropertyInfo(IMetadataImport importer, int fieldToken, MetadataType declaringType) { m_importer = importer; m_fieldToken = fieldToken; m_declaringType = declaringType; // Initialize int mdTypeDef; int pchProp, pcbSigBlob, pdwCPlusTypeFlab, pcchValue, pdwAttr, pmdSetter, pmdGetter; IntPtr ppvSigBlob; IntPtr ppvRawValue; int rmdOtherMethod; int pcOtherMethod; m_importer.GetPropertyProps(m_fieldToken, out mdTypeDef, null, 0, out pchProp, out pdwAttr, out ppvSigBlob, out pcbSigBlob, out pdwCPlusTypeFlab, out ppvRawValue, out pcchValue, out pmdSetter, out pmdGetter, out rmdOtherMethod, 0, out pcOtherMethod ); StringBuilder szField = new StringBuilder(pchProp); m_importer.GetPropertyProps(m_fieldToken, out mdTypeDef, szField, szField.Capacity, out pchProp, out pdwAttr, out ppvSigBlob, out pcbSigBlob, out pdwCPlusTypeFlab, out ppvRawValue, out pcchValue, out pmdSetter, out pmdGetter, out rmdOtherMethod, 0, out pcOtherMethod ); if (m_importer.IsValidToken((uint)pmdGetter)) { getterInfo = new MetadataMethodInfo(m_importer, pmdGetter); if (ContainsAttribute(getterInfo.Attributes, MethodAttributes.Static)) { IsStatic = true; } if (ContainsAttribute(getterInfo.Attributes, MethodAttributes.Public)) { IsPublic = true; } if (ContainsAttribute(getterInfo.Attributes, MethodAttributes.Public) && !ContainsAttribute(getterInfo.Attributes, MethodAttributes.Abstract)) { canRead = true; } } if (m_importer.IsValidToken((uint)pmdSetter)) { setterInfo = new MetadataMethodInfo(m_importer, pmdSetter); if (getterInfo == null && (setterInfo.Attributes & MethodAttributes.Static) == MethodAttributes.Static) { IsStatic = true; } if (ContainsAttribute(setterInfo.Attributes, MethodAttributes.Public) && !ContainsAttribute(setterInfo.Attributes, MethodAttributes.Abstract)) { canWrite = true; } } m_propertyAttributes = (PropertyAttributes)pdwAttr; m_name = szField.ToString(); }