void WriteRefIfByRef(DmdParameterInfo param) { if ((object)param == null) { return; } var type = param.ParameterType; if (!type.IsByRef) { return; } if (!param.IsIn && param.IsOut) { OutputWrite(Keyword_out, BoxedTextColor.Keyword); WriteSpace(); } else if (!param.IsIn && !param.IsOut && TypeFormatterUtils.IsReadOnlyParameter(param)) { OutputWrite(Keyword_in, BoxedTextColor.Keyword); WriteSpace(); } else { OutputWrite(Keyword_ref, BoxedTextColor.Keyword); WriteSpace(); } }
public OptionalAttributeInfo(DmdParameterInfo parameter) { if (parameter.IsOptional) { var caType = parameter.Member.AppDomain.GetWellKnownType(DmdWellKnownType.System_Runtime_InteropServices_OptionalAttribute, isOptional: true); ctor = caType?.GetConstructor(Array.Empty <DmdType>()); Debug.Assert((object)caType == null || (object)ctor != null); } else { ctor = null; } }
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); } }
public DmdCreatedParameterInfo(DmdMemberInfo member, DmdParameterInfo originalParameter, DmdType parameterType) { Member = member ?? throw new ArgumentNullException(nameof(member)); this.originalParameter = originalParameter ?? throw new ArgumentNullException(nameof(originalParameter)); ParameterType = parameterType ?? throw new ArgumentNullException(nameof(parameterType)); }
public DmdPropertyParameter(DmdPropertyDef property, DmdParameterInfo parameter) { Member = property ?? throw new ArgumentNullException(nameof(property)); this.parameter = parameter ?? throw new ArgumentNullException(nameof(parameter)); }
public static bool IsReadOnlyParameter(DmdParameterInfo parameter) => HasIsReadOnlyAttribute(parameter.CustomAttributes);