29 _module = module ??
throw new ArgumentNullException(nameof(module));
31 _underlyingMember = underlyingMember ??
throw new ArgumentNullException(nameof(underlyingMember));
41 if (_type !=
null && type == _type.UnderlyingType)
43 else if (type.Module == _underlyingMember.Module)
44 return _module.GetOrCreateTypeSymbol(type);
46 return base.ResolveTypeSymbol(type);
54 protected internal override ReflectionConstructorSymbol ResolveConstructorSymbol(
ConstructorInfo ctor)
56 if (_type !=
null && ctor.DeclaringType == _type.UnderlyingType)
57 return _type.GetOrCreateConstructorSymbol(ctor);
58 else if (ctor.DeclaringType !=
null && ctor.Module == _underlyingMember.Module)
59 return _module.GetOrCreateTypeSymbol(ctor.DeclaringType).GetOrCreateConstructorSymbol(ctor);
61 return base.ResolveConstructorSymbol(ctor);
69 protected internal override ReflectionMethodSymbol ResolveMethodSymbol(
MethodInfo method)
71 if (_type !=
null && method.DeclaringType == _type.UnderlyingType)
72 return _type.GetOrCreateMethodSymbol(method);
73 else if (method.DeclaringType !=
null && method.Module == _underlyingMember.Module)
74 return _module.GetOrCreateTypeSymbol(method.DeclaringType).GetOrCreateMethodSymbol(method);
76 return base.ResolveMethodSymbol(method);
84 protected internal override ReflectionFieldSymbol ResolveFieldSymbol(
FieldInfo field)
86 if (_type !=
null && field.DeclaringType == _type.UnderlyingType)
87 return _type.GetOrCreateFieldSymbol(field);
88 else if (field.DeclaringType !=
null && field.Module == _underlyingMember.Module)
89 return _module.GetOrCreateTypeSymbol(field.DeclaringType).GetOrCreateFieldSymbol(field);
91 return base.ResolveFieldSymbol(field);
100 protected internal override ReflectionPropertySymbol ResolvePropertySymbol(
PropertyInfo property)
103 if (_type !=
null && property.DeclaringType == _type.UnderlyingType)
104 return _type.GetOrCreatePropertySymbol(property);
105 else if (property.DeclaringType !=
null && property.Module == _underlyingMember.Module)
106 return _module.GetOrCreateTypeSymbol(property.DeclaringType).GetOrCreatePropertySymbol(property);
108 return base.ResolvePropertySymbol(property);
116 protected internal override ReflectionEventSymbol ResolveEventSymbol(
EventInfo @event)
118 if (_type !=
null && @event.DeclaringType == _type.UnderlyingType)
119 return _type.GetOrCreateEventSymbol(@event);
120 else if (@event.DeclaringType !=
null && @event.Module == _underlyingMember.Module)
121 return _module.GetOrCreateTypeSymbol(@event.DeclaringType).GetOrCreateEventSymbol(@event);
123 return base.ResolveEventSymbol(@event);
129 internal MemberInfo UnderlyingMember => _underlyingMember;
134 internal ReflectionModuleSymbol ContainingModule => _module;
139 internal ReflectionTypeSymbol? ContainingType => _type;
148 public virtual MemberTypes
MemberType => _underlyingMember.MemberType;
154 public virtual string Name => _underlyingMember.Name;
159 return ResolveCustomAttributes(_underlyingMember.GetCustomAttributesData());
165 return ResolveCustomAttributes(_underlyingMember.GetCustomAttributesData()).Where(i => i.AttributeType == attributeType).ToImmutableArray();
Holds references to symbols derived from System.Reflection.
ReflectionModuleSymbol GetOrCreateModuleSymbol(Module module)
Gets or creates a ReflectionModuleSymbol for the specified Module.
ReflectionTypeSymbol GetOrCreateTypeSymbol(Type type)
Gets or creates a ReflectionTypeSymbol for the specified Type.