base class · System.Reflection
MethodBase
public base class MethodBase : MemberInfo
What methods and constructors have: parameters.
- Kind
- base class
- Namespace
- System.Reflection
- Assembly
- System.Core
- Access
- public, abstract
- Source file
Reflection.ant
Inheritance
- Base classes
-
AnyMemberInfoMethodBase - Derived types
-
ConstructorInfoMethodInfo
Methods
GetParameters() : ParameterInfo[]
#
Private and internal members (6)
readonly ParameterInfo[] parameters
#
new(Type declaring, str name, i32 flags, TypeDescriber describer, i32 index, ParameterInfo[] parameters)
#
Whether the parameters are of types.
Whether the values can be the arguments.
Check(any?[] values)
#
Inherited members (12)
GetCustomAttributesmethod from MemberInfoGetCustomAttributesmethod from MemberInfoIsDefinedmethod from MemberInfoToStringmethod from MemberInfoNameproperty from MemberInfoDeclaringTypeproperty from MemberInfoIsPublicproperty from MemberInfoIsStaticproperty from MemberInfoGetTypemethod from AnyUndescribedmethod from AnyHashmethod from Anydestroymethod from Any
Source
MethodBase as Antril, decompiled from its Larva HIR.
// System.Reflection.MethodBase — System.Core (decompiled from Larva HIR)
import System;
into namespace System.Reflection
{
/// What methods and constructors have: parameters.
public base class MethodBase : MemberInfo
{
readonly ParameterInfo[] parameters;
internal:
new(Type declaring, str name, i32 flags, TypeDescriber describer, i32 index, ParameterInfo[] parameters) : base(declaring, name, flags, describer, index)
{
this.parameters = parameters;
{
ParameterInfo[] _items0 = parameters;
i32 _index1 = 0;
loop (_index1 < _items0.Length)
{
ParameterInfo parameter = _items0[_index1];
parameter.member = this;
_index1++;
}
}
}
override AttributeKey() : i32 => 2000000 + Index;
/// Whether the parameters are of `types`.
Takes(Type[] types) : bool
{
if (types.Length != parameters.Length)
return false;
loop (i32 i = 0..types.Length)
{
if (types[i] != parameters[i].ParameterType)
return false;
}
return true;
}
/// Whether the values can be the arguments.
Accepts(any?[] values) : bool
{
if (values.Length != parameters.Length)
return false;
loop (i32 i = 0..values.Length)
{
if (values[i] is any value && !parameters[i].ParameterType.IsInstanceOfType(value) && !parameters[i].ParameterType.IsNullable)
return false;
}
return true;
}
Check(any?[] values)
{
if (values.Length != parameters.Length)
throw new ArgumentError(Name + " takes " + parameters.Length + " argument(s), not " + values.Length);
}
public:
GetParameters() : ParameterInfo[] => parameters;
}
}