<PackageReference Include="Microsoft.CSharp" Version="4.4.1" />

MethodSymbol

using Microsoft.CSharp.RuntimeBinder.Syntax; using System.Reflection; namespace Microsoft.CSharp.RuntimeBinder.Semantics { internal class MethodSymbol : MethodOrPropertySymbol { private MethodKindEnum _methKind; private bool _inferenceMustFail; private bool _checkedInfMustFail; private MethodSymbol _convNext; private PropertySymbol _prop; private EventSymbol _evt; public bool isExtension; public bool isExternal; public bool isVirtual; public bool isAbstract; public bool isVarargs; public MemberInfo AssociatedMemberInfo; public TypeArray typeVars; public bool InferenceMustFail() { if (_checkedInfMustFail) return _inferenceMustFail; _checkedInfMustFail = true; for (int i = 0; i < typeVars.Count; i++) { TypeParameterType typeFind = typeVars.ItemAsTypeParameterType(i); int num = 0; while (true) { if (num >= base.Params.Count) { _inferenceMustFail = true; return true; } if (TypeManager.TypeContainsType(base.Params[num], typeFind)) break; num++; } } return false; } public bool IsExtension() { return isExtension; } public MethodKindEnum MethKind() { return _methKind; } public bool IsConstructor() { return _methKind == MethodKindEnum.Constructor; } public bool IsNullableConstructor() { if (getClass().isPredefAgg(PredefinedType.PT_G_OPTIONAL) && base.Params.Count == 1 && base.Params[0].IsGenericParameter) return IsConstructor(); return false; } public bool IsDestructor() { return _methKind == MethodKindEnum.Destructor; } public bool isPropertyAccessor() { return _methKind == MethodKindEnum.PropAccessor; } public bool isEventAccessor() { return _methKind == MethodKindEnum.EventAccessor; } private bool isExplicit() { return _methKind == MethodKindEnum.ExplicitConv; } public bool isImplicit() { return _methKind == MethodKindEnum.ImplicitConv; } public bool isInvoke() { return _methKind == MethodKindEnum.Invoke; } public void SetMethKind(MethodKindEnum mk) { _methKind = mk; } public MethodSymbol ConvNext() { return _convNext; } public void SetConvNext(MethodSymbol conv) { _convNext = conv; } public PropertySymbol getProperty() { return _prop; } public void SetProperty(PropertySymbol prop) { _prop = prop; } public EventSymbol getEvent() { return _evt; } public void SetEvent(EventSymbol evt) { _evt = evt; } public bool isConversionOperator() { if (!isExplicit()) return isImplicit(); return true; } public new bool isUserCallable() { if (!isOperator) return !isAnyAccessor(); return false; } private bool isAnyAccessor() { if (!isPropertyAccessor()) return isEventAccessor(); return true; } public bool isSetAccessor() { if (!isPropertyAccessor()) return false; PropertySymbol property = getProperty(); if (property == null) return false; return this == property.methSet; } } }