public void AddImportedMember(MemberInfo memberInfo) { if (importedMembers == null) { importedMembers = new List<MemberInfo>(); } foreach (var existingImportedMember in importedMembers) { if (existingImportedMember.Handle == memberInfo.Handle) { return; } } importedMembers.Add(memberInfo); memberInfo.Type = this; }
public void AddExportedMember(MemberInfo memberInfo) { if (exportedMembers == null) { exportedMembers = new List<MemberInfo>(); } foreach (var existingExportedMember in exportedMembers) { if (existingExportedMember.Handle == memberInfo.Handle) { return; } } exportedMembers.Add(memberInfo); memberInfo.Type = this; this.IsExported = true; }
private MemberInfo GetPropertyInfo(Metadata.MemberInfo memberInfo) { return(ReflectionHelpers.GetPropertyInfo(this.Module, memberInfo.Token, memberInfo.Type.MetadataToken)); }
private MemberInfo GetMethodInfo(Metadata.MemberInfo memberInfo) { return(Module.ResolveMethod(memberInfo.Token)); }
private void AddExportedMember(MemberInfo memberInfo) { var type = GetOrCreateTypeInfo(memberInfo.DeclaringTypeDefinitionHandle); type.AddExportedMember(memberInfo); }
private MemberInfo GetOrAddMethodInfo(MethodDefinitionHandle handle) { if (this.methods == null) { this.methods = new Dictionary<MethodDefinitionHandle, MemberInfo>(); } MemberInfo result = null; if (!methods.TryGetValue(handle, out result)) { var method = metadataReader.GetMethodDefinition(handle); result = new MemberInfo(MemberKind.Method); result.Token = this.metadataReader.GetToken(handle); result.DeclaringTypeDefinitionHandle = method.GetDeclaringType(); result.Handle = handle; methods[handle] = result; } return result; }
private MemberInfo GetOrAddFieldInfo(FieldDefinitionHandle handle) { if (this.fields == null) { this.fields = new Dictionary<FieldDefinitionHandle, MemberInfo>(); } MemberInfo result = null; if (!fields.TryGetValue(handle, out result)) { result = new MemberInfo(MemberKind.Field); var field = metadataReader.GetFieldDefinition(handle); result.Token = metadataReader.GetToken(handle); result.DeclaringTypeDefinitionHandle = field.GetDeclaringType(); if (result.DeclaringTypeDefinitionHandle.IsNil) { throw null; } result.Handle = handle; fields[handle] = result; } return result; }
private MemberInfo GetOrAddPropertyInfo(PropertyDefinitionHandle handle) { if (this.properties == null) { properties = new Dictionary<PropertyDefinitionHandle, MemberInfo>(); } MemberInfo result = null; if (!properties.TryGetValue(handle, out result)) { var property = metadataReader.GetPropertyDefinition(handle); var propertyMethodDefinitionHandles = property.GetAccessors(); TypeDefinitionHandle declaringTypeDefinitionHandle; MethodDefinitionHandle accessorMethod = propertyMethodDefinitionHandles.Getter; if (accessorMethod.IsNil) { accessorMethod = propertyMethodDefinitionHandles.Setter; } declaringTypeDefinitionHandle = metadataReader.GetMethodDefinition(accessorMethod).GetDeclaringType(); result = new MemberInfo(MemberKind.Property); result.Token = this.metadataReader.GetToken(handle); result.DeclaringTypeDefinitionHandle = declaringTypeDefinitionHandle; result.Handle = handle; properties.Add(handle, result); } return result; }
private void AddImportedMember(MemberInfo memberInfo) { var type = GetOrCreateTypeInfo(memberInfo.DeclaringTypeHandle); type.AddImportedMember(memberInfo); }