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
Any MemberInfo MethodBase
Derived types
ConstructorInfo MethodInfo

Methods

GetParameters() : ParameterInfo[]
#

Private and internal members (6)

readonly ParameterInfo[] parameters
#

private

new(Type declaring, str name, i32 flags, TypeDescriber describer, i32 index, ParameterInfo[] parameters)
#

internal

override AttributeKey() : i32
#

internal override

Takes(Type[] types) : bool
#

internal

Whether the parameters are of types.

Accepts(any?[] values) : bool
#

internal

Whether the values can be the arguments.

Check(any?[] values)
#

internal

Inherited members (12)

Source

MethodBase as Antril, decompiled from its Larva HIR.

System.Reflection.MethodBase.ant
// 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;
	}
}
Esc