33 _module = module ??
throw new ArgumentNullException(nameof(module));
35 _underlyingMember = underlyingMember ??
throw new ArgumentNullException(nameof(underlyingMember));
45 if (_type !=
null && type == _type.UnderlyingType)
47 else if (type.Module == _underlyingMember.Module)
48 return _module.GetOrCreateTypeSymbol(type);
50 return base.ResolveTypeSymbol(type);
58 protected internal override IkvmReflectionConstructorSymbol ResolveConstructorSymbol(
ConstructorInfo ctor)
60 if (_type !=
null && ctor.DeclaringType == _type.UnderlyingType)
61 return _type.GetOrCreateConstructorSymbol(ctor);
62 else if (ctor.DeclaringType !=
null && ctor.Module == _underlyingMember.Module)
63 return _module.GetOrCreateTypeSymbol(ctor.DeclaringType).GetOrCreateConstructorSymbol(ctor);
65 return base.ResolveConstructorSymbol(ctor);
73 protected internal override IkvmReflectionMethodSymbol ResolveMethodSymbol(
MethodInfo method)
75 if (_type !=
null && method.DeclaringType == _type.UnderlyingType)
76 return _type.GetOrCreateMethodSymbol(method);
77 else if (method.DeclaringType !=
null && method.Module == _underlyingMember.Module)
78 return _module.GetOrCreateTypeSymbol(method.DeclaringType).GetOrCreateMethodSymbol(method);
80 return base.ResolveMethodSymbol(method);
88 protected internal override IkvmReflectionFieldSymbol ResolveFieldSymbol(
FieldInfo field)
90 if (_type !=
null && field.DeclaringType == _type.UnderlyingType)
91 return _type.GetOrCreateFieldSymbol(field);
92 else if (field.DeclaringType !=
null && field.Module == _underlyingMember.Module)
93 return _module.GetOrCreateTypeSymbol(field.DeclaringType).GetOrCreateFieldSymbol(field);
95 return base.ResolveFieldSymbol(field);
104 protected internal override IkvmReflectionPropertySymbol ResolvePropertySymbol(
PropertyInfo property)
107 if (_type !=
null && property.DeclaringType == _type.UnderlyingType)
108 return _type.GetOrCreatePropertySymbol(property);
109 else if (property.DeclaringType !=
null && property.Module == _underlyingMember.Module)
110 return _module.GetOrCreateTypeSymbol(property.DeclaringType).GetOrCreatePropertySymbol(property);
112 return base.ResolvePropertySymbol(property);
120 protected internal override IkvmReflectionEventSymbol ResolveEventSymbol(
EventInfo @event)
122 if (_type !=
null && @event.DeclaringType == _type.UnderlyingType)
123 return _type.GetOrCreateEventSymbol(@event);
124 else if (@event.DeclaringType !=
null && @event.Module == _underlyingMember.Module)
125 return _module.GetOrCreateTypeSymbol(@event.DeclaringType).GetOrCreateEventSymbol(@event);
127 return base.ResolveEventSymbol(@event);
130 internal MemberInfo UnderlyingMember => _underlyingMember;
132 internal IkvmReflectionModuleSymbol ContainingModule => _module;
134 internal IkvmReflectionTypeSymbol? ContainingType => _type;
138 public virtual global::System.Reflection.MemberTypes
MemberType => (global::System.Reflection.MemberTypes)_underlyingMember.MemberType;
144 public virtual string Name => _underlyingMember.
Name;
146 public override bool IsMissing => _underlyingMember.__IsMissing;
150 return ResolveCustomAttributes(_underlyingMember.GetCustomAttributesData());
155 return ResolveCustomAttributes(_underlyingMember.GetCustomAttributesData()).Where(i => i.AttributeType == attributeType).ToImmutableArray();
Holds references to symbols derived from System.Reflection.
IkvmReflectionTypeSymbol GetOrCreateTypeSymbol(Type type)
Gets or creates a IkvmReflectionTypeSymbol for the specified Type.
IkvmReflectionModuleSymbol GetOrCreateModuleSymbol(Module module)
Gets or creates a IkvmReflectionModuleSymbol for the specified Module.