18 Type[]? _genericParametersSource;
30 base(context, module, type, underlyingMethod)
32 _underlyingMethod = underlyingMethod ??
throw new ArgumentNullException(nameof(underlyingMethod));
43 if (genericParameterType is
null)
44 throw new ArgumentNullException(nameof(genericParameterType));
46 Debug.Assert(genericParameterType.DeclaringMethod == _underlyingMethod);
49 _genericParametersSource ??= _underlyingMethod.GetGenericArguments();
56 if (_genericParameters.Length < idx)
57 throw new IndexOutOfRangeException();
60 ref var rec =
ref _genericParameters[idx];
66 throw new InvalidOperationException();
79 if (genericMethodArguments is
null)
80 throw new ArgumentNullException(nameof(genericMethodArguments));
82 if (_underlyingMethod.IsGenericMethodDefinition ==
false)
83 throw new InvalidOperationException();
86 _genericParametersSource ??= _underlyingMethod.GetGenericArguments();
87 if (_genericParametersSource.Length != genericMethodArguments.Length)
88 throw new InvalidOperationException();
95 foreach (var i
in _genericTypes)
96 if (i.Arguments.SequenceEqual(genericMethodArguments))
101 _genericTypes.Add((genericMethodArguments, sym));
106 internal MethodInfo UnderlyingMethod => _underlyingMethod;
116 return ResolveMethodSymbol(_underlyingMethod.GetBaseDefinition());
121 return ResolveMethodSymbol(_underlyingMethod.GetGenericMethodDefinition());
126 return ResolveMethodSymbol(_underlyingMethod.MakeGenericMethod(UnpackTypeSymbols(typeArguments)));
Holds references to symbols derived from System.Reflection.