Example #1
0
        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;
        }
Example #2
0
        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;
        }
Example #3
0
 private MemberInfo GetPropertyInfo(Metadata.MemberInfo memberInfo)
 {
     return(ReflectionHelpers.GetPropertyInfo(this.Module, memberInfo.Token, memberInfo.Type.MetadataToken));
 }
Example #4
0
 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);
 }