protected override DmdParameterInfo[] CreateParameters() { var parameterTypes = methodSignature.GetParameterTypes(); var parameters = parameterTypes.Count == 0 ? Array.Empty <DmdParameterInfo>() : new DmdParameterInfo[parameterTypes.Count]; for (int i = 0; i < parameters.Length; i++) { parameters[i] = new DmdCreatedParameterDef(this, i, parameterTypes[i]); } return(parameters); }
DmdParameterInfo[] CreateIndexParameters() { if (GetGetMethod(DmdGetAccessorOptions.All) is DmdMethodInfo getMethod) { var ps = getMethod.GetParameters(); var res = new DmdParameterInfo[ps.Count]; for (int i = 0; i < res.Length; i++) { res[i] = new DmdPropertyParameter(this, ps[i]); } return(res); } else if (GetSetMethod(DmdGetAccessorOptions.All) is DmdMethodInfo setMethod) { var ps = setMethod.GetParameters(); if (ps.Count == 0) { return(Array.Empty <DmdParameterInfo>()); } var res = new DmdParameterInfo[ps.Count - 1]; for (int i = 0; i < res.Length; i++) { res[i] = new DmdPropertyParameter(this, ps[i]); } return(res); } else { var types = GetMethodSignature().GetParameterTypes(); var res = new DmdParameterInfo[types.Count]; for (int i = 0; i < res.Length; i++) { res[i] = new DmdCreatedParameterDef(this, i, types[i]); } return(res); } }