2using System.Diagnostics;
29 base(context, module, type, underlyingMethodBase)
31 _underlyingMethodBase = underlyingMethodBase ??
throw new ArgumentNullException(nameof(underlyingMethodBase));
41 if (parameter is
null)
42 throw new ArgumentNullException(nameof(parameter));
44 Debug.Assert(parameter.Member == _underlyingMethodBase);
46 if (_parametersSource ==
null)
47 Interlocked.CompareExchange(
ref _parametersSource, _underlyingMethodBase.GetParameters().OrderBy(i => i.Position).ToArray(),
null);
48 if (_parameters ==
null)
52 var idx = parameter.Position;
53 Debug.Assert(idx >= -1);
54 Debug.Assert(idx < _parametersSource.Length);
57 if (idx >= 0 && _parameters.Length < idx)
58 throw new IndexOutOfRangeException();
61 ref var rec =
ref _returnParameter;
63 rec =
ref _parameters[idx];
69 throw new InvalidOperationException();
74 public global::System.Reflection.MethodAttributes
Attributes => (global::System.Reflection.MethodAttributes)_underlyingMethodBase.Attributes;
76 public global::System.Reflection.CallingConventions
CallingConvention => (global::System.Reflection.CallingConventions)_underlyingMethodBase.CallingConvention;
80 public bool IsAbstract => _underlyingMethodBase.IsAbstract;
82 public bool IsAssembly => _underlyingMethodBase.IsAssembly;
86 public bool IsFamily => _underlyingMethodBase.IsFamily;
92 public bool IsFinal => _underlyingMethodBase.IsFinal;
100 public bool IsPrivate => _underlyingMethodBase.IsPrivate;
102 public bool IsPublic => _underlyingMethodBase.IsPublic;
106 public bool IsStatic => _underlyingMethodBase.IsStatic;
108 public bool IsVirtual => _underlyingMethodBase.IsVirtual;
110 public global::System.Reflection.MethodImplAttributes
MethodImplementationFlags => (global::System.Reflection.MethodImplAttributes)_underlyingMethodBase.MethodImplementationFlags;
114 return ResolveTypeSymbols(_underlyingMethodBase.GetGenericArguments());
119 return (global::System.Reflection.MethodImplAttributes)_underlyingMethodBase.GetMethodImplementationFlags();
124 return ResolveParameterSymbols(_underlyingMethodBase.GetParameters());
System.Threading.Interlocked Interlocked
IKVM.Reflection.ParameterInfo ParameterInfo
IKVM.Reflection.MethodBase MethodBase
System.Runtime.InteropServices.CallingConvention CallingConvention
bool IsAssembly
Gets a value indicating whether the potential visibility of this method or constructor is described b...
bool IsPrivate
Gets a value indicating whether this member is private.
global::System.Reflection.MethodImplAttributes MethodImplementationFlags
Gets the MethodImplAttributes flags that specify the attributes of a method implementation.
IParameterSymbol[] GetParameters()
When overridden in a derived class, gets the parameters of the specified method or constructor.
bool IsHideBySig
Gets a value indicating whether only a member of the same kind with exactly the same signature is hid...
bool ContainsGenericParameters
Gets a value indicating whether the generic method contains unassigned generic type parameters.
bool IsFamilyAndAssembly
Gets a value indicating whether the visibility of this method or constructor is described by FamANDAs...
bool IsSpecialName
Gets a value indicating whether this method has a special name.
global::System.Reflection.MethodImplAttributes GetMethodImplementationFlags()
When overridden in a derived class, returns the MethodImplAttributes flags.
IkvmReflectionMethodBaseSymbol(IkvmReflectionSymbolContext context, IkvmReflectionModuleSymbol module, IkvmReflectionTypeSymbol? type, MethodBase underlyingMethodBase)
Initializes a new instance.
bool IsStatic
Gets a value indicating whether the method is static.
bool IsGenericMethod
Gets a value indicating whether the method is generic.
bool IsConstructor
Gets a value indicating whether the method is a constructor.
bool IsFamilyOrAssembly
Gets a value indicating whether the potential visibility of this method or constructor is described b...
bool IsGenericMethodDefinition
Gets a value indicating whether the method is a generic method definition.
bool IsPublic
Gets a value indicating whether this is a public method.
bool IsAbstract
Gets a value indicating whether the method is abstract.
bool IsFinal
Gets a value indicating whether this method is final.
global::System.Reflection.MethodAttributes Attributes
Gets the attributes associated with this method.
bool IsFamily
Gets a value indicating whether the visibility of this method or constructor is described by Family; ...
bool IsVirtual
Gets a value indicating whether the method is virtual.
ITypeSymbol[] GetGenericArguments()
Returns an array of ITypeSymbol objects that represent the type arguments of a generic method or the ...
Implementation of IModuleSymbol derived from System.Reflection.
Holds references to symbols derived from System.Reflection.
IkvmReflectionSymbolContext Context
Gets the associated IkvmReflectionSymbolContext.
Provides information about methods and constructors.
Discovers the attributes of a parameter and provides access to parameter metadata.
Represents type declarations: class types, interface types, array types, value types,...