private FieldInfo GetFieldInfo(RuntimeTypeHandle declaringTypeHandle, FieldHandle fieldHandle) { RuntimeTypeInfo contextTypeInfo = declaringTypeHandle.GetTypeForRuntimeTypeHandle(); RuntimeNamedTypeInfo definingTypeInfo = contextTypeInfo.AnchoringTypeDefinitionForDeclaredMembers; MetadataReader reader = definingTypeInfo.Reader; return(RuntimeFieldInfo.GetRuntimeFieldInfo(fieldHandle, definingTypeInfo, contextTypeInfo)); }
private FieldInfo GetFieldInfo(RuntimeTypeHandle declaringTypeHandle, FieldHandle fieldHandle) { RuntimeTypeInfo contextTypeInfo = declaringTypeHandle.GetTypeForRuntimeTypeHandle(); RuntimeNamedTypeInfo definingTypeInfo = contextTypeInfo.AnchoringTypeDefinitionForDeclaredMembers; MetadataReader reader = definingTypeInfo.Reader; // RuntimeFieldHandles always yield FieldInfo's whose ReflectedType equals the DeclaringType. RuntimeTypeInfo reflectedType = contextTypeInfo; return(RuntimeFieldInfo.GetRuntimeFieldInfo(fieldHandle, definingTypeInfo, contextTypeInfo, reflectedType)); }
internal IEnumerable <FieldInfo> CoreGetDeclaredFields(NameFilter optionalNameFilter, RuntimeTypeInfo reflectedType) { RuntimeNamedTypeInfo definingType = AnchoringTypeDefinitionForDeclaredMembers; if (definingType != null) { MetadataReader reader = definingType.Reader; foreach (FieldHandle fieldHandle in definingType.DeclaredFieldHandles) { if (optionalNameFilter == null || optionalNameFilter.Matches(fieldHandle.GetField(reader).Name, reader)) { yield return(RuntimeFieldInfo.GetRuntimeFieldInfo(fieldHandle, definingType, this, reflectedType)); } } } }
// // Return all declared fields whose name matches "optionalNameFilter". If optionalNameFilter is null, return them all. // internal IEnumerable <RuntimeFieldInfo> GetDeclaredFieldsInternal(RuntimeNamedTypeInfo definingType, String optionalNameFilter) { if (definingType != null) { // We require the caller to pass a value that we could calculate ourselves because we're an iterator and we // don't want any MissingMetadataException that AnchoringType throws to be deferred. Debug.Assert(definingType.Equals(this.AnchoringTypeDefinitionForDeclaredMembers)); MetadataReader reader = definingType.Reader; foreach (FieldHandle fieldHandle in definingType.DeclaredFieldHandles) { if (optionalNameFilter == null || fieldHandle.GetField(reader).Name.StringEquals(optionalNameFilter, reader)) { yield return(RuntimeFieldInfo.GetRuntimeFieldInfo(fieldHandle, definingType, this)); } } } }