internal IEnumerable<ConstructorInfo> CoreGetDeclaredConstructors(NameFilter optionalNameFilter) { // // - It may sound odd to get a non-null name filter for a constructor search, but Type.GetMember() is an api that does this. // // - All GetConstructor() apis act as if BindingFlags.DeclaredOnly were specified. So the ReflectedType will always be the declaring type and so is not passed to this method. // RuntimeNamedTypeInfo definingType = AnchoringTypeDefinitionForDeclaredMembers; if (definingType != null) { MetadataReader reader = definingType.Reader; RuntimeTypeInfo contextType = this; foreach (MethodHandle methodHandle in definingType.DeclaredMethodAndConstructorHandles) { Method method = methodHandle.GetMethod(reader); if (!MetadataReaderExtensions.IsConstructor(ref method, reader)) continue; if (optionalNameFilter == null || optionalNameFilter.Matches(method.Name, reader)) yield return RuntimePlainConstructorInfo.GetRuntimePlainConstructorInfo(methodHandle, definingType, contextType); } } foreach (RuntimeConstructorInfo syntheticConstructor in SyntheticConstructors) { if (optionalNameFilter == null || optionalNameFilter.Matches(syntheticConstructor.IsStatic ? ConstructorInfo.TypeConstructorName : ConstructorInfo.ConstructorName)) yield return syntheticConstructor; } }
internal sealed override IEnumerable<Type> CoreGetDeclaredNestedTypes(NameFilter optionalNameFilter) { foreach (TypeDefinitionHandle nestedTypeHandle in _typeDefinition.NestedTypes) { if (optionalNameFilter == null || optionalNameFilter.Matches(nestedTypeHandle.GetTypeDefinition(_reader).Name, _reader)) yield return nestedTypeHandle.GetNamedType(_reader); } }
private IEnumerable<ConstructorInfo> CoreGetDeclaredSyntheticConstructors(NameFilter optionalNameFilter) { foreach (RuntimeConstructorInfo syntheticConstructor in SyntheticConstructors) { if (optionalNameFilter == null || optionalNameFilter.Matches(syntheticConstructor.IsStatic ? ConstructorInfo.TypeConstructorName : ConstructorInfo.ConstructorName)) yield return syntheticConstructor; } }
private IEnumerable<MethodInfo> CoreGetDeclaredSyntheticMethods(NameFilter optionalNameFilter) { foreach (RuntimeMethodInfo syntheticMethod in SyntheticMethods) { if (optionalNameFilter == null || optionalNameFilter.Matches(syntheticMethod.Name)) yield return syntheticMethod; } }
internal sealed override IEnumerable<EventInfo> CoreGetDeclaredEvents(NameFilter optionalNameFilter, RuntimeTypeInfo reflectedType, RuntimeTypeInfo contextTypeInfo) { MetadataReader reader = Reader; foreach (EventHandle eventHandle in DeclaredEventHandles) { if (optionalNameFilter == null || optionalNameFilter.Matches(eventHandle.GetEvent(reader).Name, reader)) yield return NativeFormatRuntimeEventInfo.GetRuntimeEventInfo(eventHandle, this, contextTypeInfo, reflectedType); } }
internal IEnumerable<EventInfo> CoreGetDeclaredEvents(NameFilter optionalNameFilter, RuntimeTypeInfo reflectedType) { RuntimeNamedTypeInfo definingType = AnchoringTypeDefinitionForDeclaredMembers; if (definingType != null) { return definingType.CoreGetDeclaredEvents(optionalNameFilter, reflectedType, this); } return Empty<EventInfo>.Enumerable; }
internal sealed override IEnumerable<PropertyInfo> CoreGetDeclaredProperties(NameFilter optionalNameFilter, RuntimeTypeInfo reflectedType, RuntimeTypeInfo contextTypeInfo) { MetadataReader reader = Reader; foreach (PropertyHandle propertyHandle in DeclaredPropertyHandles) { if (optionalNameFilter == null || optionalNameFilter.Matches(propertyHandle.GetProperty(reader).Name, reader)) yield return NativeFormatRuntimePropertyInfo.GetRuntimePropertyInfo(propertyHandle, this, contextTypeInfo, reflectedType); } }
internal IEnumerable<MethodInfo> CoreGetDeclaredMethods(NameFilter optionalNameFilter, RuntimeTypeInfo reflectedType) { RuntimeNamedTypeInfo definingType = AnchoringTypeDefinitionForDeclaredMembers; if (definingType != null) { // If there is a definingType, we do not support Synthetic constructors Debug.Assert(Object.ReferenceEquals(SyntheticMethods, Empty<RuntimeMethodInfo>.Enumerable)); return definingType.CoreGetDeclaredMethods(optionalNameFilter, reflectedType, this); } return CoreGetDeclaredSyntheticMethods(optionalNameFilter); }
internal sealed override IEnumerable<MethodInfo> CoreGetDeclaredMethods(NameFilter optionalNameFilter, RuntimeTypeInfo reflectedType, RuntimeTypeInfo contextTypeInfo) { MetadataReader reader = Reader; foreach (MethodHandle methodHandle in DeclaredMethodAndConstructorHandles) { Method method = methodHandle.GetMethod(reader); if (MetadataReaderExtensions.IsConstructor(ref method, reader)) continue; if (optionalNameFilter == null || optionalNameFilter.Matches(method.Name, reader)) yield return RuntimeNamedMethodInfo<NativeFormatMethodCommon>.GetRuntimeNamedMethodInfo(new NativeFormatMethodCommon(methodHandle, this, contextTypeInfo), reflectedType); } }
internal sealed override IEnumerable<ConstructorInfo> CoreGetDeclaredConstructors(NameFilter optionalNameFilter, RuntimeTypeInfo contextTypeInfo) { // // - It may sound odd to get a non-null name filter for a constructor search, but Type.GetMember() is an api that does this. // // - All GetConstructor() apis act as if BindingFlags.DeclaredOnly were specified. So the ReflectedType will always be the declaring type and so is not passed to this method. // MetadataReader reader = Reader; foreach (MethodHandle methodHandle in DeclaredMethodAndConstructorHandles) { Method method = methodHandle.GetMethod(reader); if (!MetadataReaderExtensions.IsConstructor(ref method, reader)) continue; if (optionalNameFilter == null || optionalNameFilter.Matches(method.Name, reader)) yield return RuntimePlainConstructorInfo<NativeFormatMethodCommon>.GetRuntimePlainConstructorInfo(new NativeFormatMethodCommon(methodHandle, this, contextTypeInfo)); } }
internal IEnumerable<ConstructorInfo> CoreGetDeclaredConstructors(NameFilter optionalNameFilter) { // // - It may sound odd to get a non-null name filter for a constructor search, but Type.GetMember() is an api that does this. // // - All GetConstructor() apis act as if BindingFlags.DeclaredOnly were specified. So the ReflectedType will always be the declaring type and so is not passed to this method. // RuntimeNamedTypeInfo definingType = AnchoringTypeDefinitionForDeclaredMembers; if (definingType != null) { // If there is a definingType, we do not support Synthetic constructors Debug.Assert(Object.ReferenceEquals(SyntheticConstructors, Empty<RuntimeConstructorInfo>.Enumerable)); return definingType.CoreGetDeclaredConstructors(optionalNameFilter, this); } return CoreGetDeclaredSyntheticConstructors(optionalNameFilter); }
internal IEnumerable<MethodInfo> CoreGetDeclaredMethods(NameFilter optionalNameFilter, RuntimeTypeInfo reflectedType) { RuntimeNamedTypeInfo definingType = AnchoringTypeDefinitionForDeclaredMembers; if (definingType != null) { MetadataReader reader = definingType.Reader; foreach (MethodHandle methodHandle in definingType.DeclaredMethodAndConstructorHandles) { Method method = methodHandle.GetMethod(reader); if (MetadataReaderExtensions.IsConstructor(ref method, reader)) continue; if (optionalNameFilter == null || optionalNameFilter.Matches(method.Name, reader)) yield return RuntimeNamedMethodInfo.GetRuntimeNamedMethodInfo(methodHandle, definingType, this); } } foreach (RuntimeMethodInfo syntheticMethod in SyntheticMethods) { if (optionalNameFilter == null || optionalNameFilter.Matches(syntheticMethod.Name)) yield return syntheticMethod; } }
// // - All GetNestedType() apis act as if BindingFlags.DeclaredOnly were specified. So the ReflectedType will always be the declaring type and so is not passed to this method. // // This method is left unsealed as RuntimeNamedTypeInfo and others need to override with specific implementations. // internal virtual IEnumerable<Type> CoreGetDeclaredNestedTypes(NameFilter optionalNameFilter) { return Array.Empty<Type>(); }
// Metadata providing implementations of RuntimeNamedTypeInfo implement the following methods // to provide filtered access to the various reflection objects by reading metadata directly. // The loop of examining methods is done in a metadata specific manner for greater efficiency. internal abstract IEnumerable <ConstructorInfo> CoreGetDeclaredConstructors(NameFilter optionalNameFilter, RuntimeTypeInfo contextTypeInfo);
// // - All GetNestedType() apis act as if BindingFlags.DeclaredOnly were specified. So the ReflectedType will always be the declaring type and so is not passed to this method. // // This method is left unsealed as RuntimeNamedTypeInfo and others need to override with specific implementations. // internal virtual IEnumerable <Type> CoreGetDeclaredNestedTypes(NameFilter optionalNameFilter) { return(Array.Empty <Type>()); }
internal abstract IEnumerable <PropertyInfo> CoreGetDeclaredProperties(NameFilter optionalNameFilter, RuntimeTypeInfo reflectedType, RuntimeTypeInfo contextTypeInfo);
internal abstract IEnumerable <FieldInfo> CoreGetDeclaredFields(NameFilter optionalNameFilter, RuntimeTypeInfo reflectedType, RuntimeTypeInfo contextTypeInfo);
internal abstract IEnumerable<PropertyInfo> CoreGetDeclaredProperties(NameFilter optionalNameFilter, RuntimeTypeInfo reflectedType, RuntimeTypeInfo contextTypeInfo);
internal sealed override IEnumerable <Type> CoreGetDeclaredNestedTypes(NameFilter optionalNameFilter) { return(GenericTypeDefinitionTypeInfo.CoreGetDeclaredNestedTypes(optionalNameFilter)); }
internal abstract IEnumerable<FieldInfo> CoreGetDeclaredFields(NameFilter optionalNameFilter, RuntimeTypeInfo reflectedType, RuntimeTypeInfo contextTypeInfo);
internal sealed override IEnumerable <Type> CoreGetDeclaredNestedTypes(NameFilter optionalNameFilter) { throw ReflectionCoreExecution.ExecutionDomain.CreateMissingMetadataException(this); }
internal sealed override IEnumerable<Type> CoreGetDeclaredNestedTypes(NameFilter optionalNameFilter) { throw ReflectionCoreExecution.ExecutionDomain.CreateMissingMetadataException(this); }
internal sealed override IEnumerable<Type> CoreGetDeclaredNestedTypes(NameFilter optionalNameFilter) { return GenericTypeDefinitionTypeInfo.CoreGetDeclaredNestedTypes(optionalNameFilter); }
internal sealed override IEnumerable <Type> CoreGetDeclaredNestedTypes(NameFilter optionalNameFilter) { return(Array.Empty <Type>()); }
internal sealed override IEnumerable<Type> CoreGetDeclaredNestedTypes(NameFilter optionalNameFilter) { return Array.Empty<Type>(); }
internal sealed override IEnumerable <ConstructorInfo> CoreGetDeclaredConstructors(NameFilter optionalNameFilter, RuntimeTypeInfo contextTypeInfo) { // // - It may sound odd to get a non-null name filter for a constructor search, but Type.GetMember() is an api that does this. // // - All GetConstructor() apis act as if BindingFlags.DeclaredOnly were specified. So the ReflectedType will always be the declaring type and so is not passed to this method. // MetadataReader reader = Reader; foreach (MethodDefinitionHandle methodHandle in DeclaredMethodAndConstructorHandles) { MethodDefinition method = reader.GetMethodDefinition(methodHandle); if (!EcmaMetadataHelpers.IsConstructor(ref method, reader)) { continue; } if (optionalNameFilter == null || optionalNameFilter.Matches(method.Name, reader)) { yield return(RuntimePlainConstructorInfo <EcmaFormatMethodCommon> .GetRuntimePlainConstructorInfo(new EcmaFormatMethodCommon(methodHandle, this, contextTypeInfo))); } } }
// Metadata providing implementations of RuntimeNamedTypeInfo implement the following methods // to provide filtered access to the various reflection objects by reading metadata directly. // The loop of examining methods is done in a metadata specific manner for greater efficiency. internal abstract IEnumerable<ConstructorInfo> CoreGetDeclaredConstructors(NameFilter optionalNameFilter, RuntimeTypeInfo contextTypeInfo);
internal sealed override IEnumerable <PropertyInfo> CoreGetDeclaredProperties(NameFilter optionalNameFilter, RuntimeTypeInfo reflectedType, RuntimeTypeInfo contextTypeInfo) { MetadataReader reader = Reader; foreach (PropertyDefinitionHandle propertyHandle in DeclaredPropertyHandles) { if (optionalNameFilter == null || optionalNameFilter.Matches(reader.GetPropertyDefinition(propertyHandle).Name, reader)) { yield return(EcmaFormatRuntimePropertyInfo.GetRuntimePropertyInfo(propertyHandle, this, contextTypeInfo, reflectedType)); } } }
internal IEnumerable<EventInfo> CoreGetDeclaredEvents(NameFilter optionalNameFilter, RuntimeTypeInfo reflectedType) { RuntimeNamedTypeInfo definingType = AnchoringTypeDefinitionForDeclaredMembers; if (definingType != null) { MetadataReader reader = definingType.Reader; foreach (EventHandle eventHandle in definingType.DeclaredEventHandles) { if (optionalNameFilter == null || optionalNameFilter.Matches(eventHandle.GetEvent(reader).Name, reader)) yield return RuntimeEventInfo.GetRuntimeEventInfo(eventHandle, definingType, this); } } }
internal IEnumerable<PropertyInfo> CoreGetDeclaredProperties(NameFilter optionalNameFilter, RuntimeTypeInfo reflectedType) { RuntimeNamedTypeInfo definingType = AnchoringTypeDefinitionForDeclaredMembers; if (definingType != null) { MetadataReader reader = definingType.Reader; foreach (PropertyHandle propertyHandle in definingType.DeclaredPropertyHandles) { if (optionalNameFilter == null || optionalNameFilter.Matches(propertyHandle.GetProperty(reader).Name, reader)) yield return RuntimePropertyInfo.GetRuntimePropertyInfo(propertyHandle, definingType, this, reflectedType); } } }