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)); } } } }
// // Return all declared properties whose name matches "optionalNameFilter". If optionalNameFilter is null, return them all. // internal IEnumerable <RuntimePropertyInfo> GetDeclaredPropertiesInternal(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 (PropertyHandle propertyHandle in definingType.DeclaredPropertyHandles) { if (optionalNameFilter == null || propertyHandle.GetProperty(reader).Name.StringEquals(optionalNameFilter, reader)) { yield return(RuntimePropertyInfo.GetRuntimePropertyInfo(propertyHandle, definingType, this)); } } } }