Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ FilterApplyMethodBase()

static bool System.RuntimeType.FilterApplyMethodBase ( MethodBase methodBase,
BindingFlags methodFlags,
BindingFlags bindingFlags,
CallingConventions callConv,
Type[] argumentTypes )
inlinestaticprivate

Definition at line 2009 of file RuntimeType.cs.

2010 {
2011 bindingFlags ^= BindingFlags.DeclaredOnly;
2013 {
2014 return false;
2015 }
2016 if ((callConv & CallingConventions.Any) == 0)
2017 {
2018 if ((callConv & CallingConventions.VarArgs) != 0 && (methodBase.CallingConvention & CallingConventions.VarArgs) == 0)
2019 {
2020 return false;
2021 }
2022 if ((callConv & CallingConventions.Standard) != 0 && (methodBase.CallingConvention & CallingConventions.Standard) == 0)
2023 {
2024 return false;
2025 }
2026 }
2027 if (argumentTypes != null)
2028 {
2029 ParameterInfo[] parametersNoCopy = methodBase.GetParametersNoCopy();
2030 if (argumentTypes.Length != parametersNoCopy.Length)
2031 {
2032 if ((bindingFlags & (BindingFlags.InvokeMethod | BindingFlags.CreateInstance | BindingFlags.GetProperty | BindingFlags.SetProperty)) == 0)
2033 {
2034 return false;
2035 }
2036 bool flag = false;
2037 if (argumentTypes.Length > parametersNoCopy.Length)
2038 {
2039 if ((methodBase.CallingConvention & CallingConventions.VarArgs) == 0)
2040 {
2041 flag = true;
2042 }
2043 }
2044 else if ((bindingFlags & BindingFlags.OptionalParamBinding) == 0)
2045 {
2046 flag = true;
2047 }
2048 else if (!parametersNoCopy[argumentTypes.Length].IsOptional)
2049 {
2050 flag = true;
2051 }
2052 if (flag)
2053 {
2054 if (parametersNoCopy.Length == 0)
2055 {
2056 return false;
2057 }
2058 if (argumentTypes.Length < parametersNoCopy.Length - 1)
2059 {
2060 return false;
2061 }
2063 if (!parameterInfo.ParameterType.IsArray)
2064 {
2065 return false;
2066 }
2067 if (!parameterInfo.IsDefined(typeof(ParamArrayAttribute), inherit: false))
2068 {
2069 return false;
2070 }
2071 }
2072 }
2073 else if ((bindingFlags & BindingFlags.ExactBinding) != 0 && (bindingFlags & BindingFlags.InvokeMethod) == 0)
2074 {
2075 for (int i = 0; i < parametersNoCopy.Length; i++)
2076 {
2078 if ((object)type != null && !type.MatchesParameterTypeExactly(parametersNoCopy[i]))
2079 {
2080 return false;
2081 }
2082 }
2083 }
2084 }
2085 return true;
2086 }

References System.type.

Referenced by System.RuntimeType.FilterApplyConstructorInfo(), and System.RuntimeType.FilterApplyMethodInfo().