private Type GetArgumentTypeInternal(ParameterInfo parameter) { MethodInfo method = (MethodInfo)parameter.Member; if (!_methods.TryGetValue(method, out IExtendedMethodTypeInfo info)) { info = method.GetExtendedMethodTypeInfo(); } return(ExtendedTypeRewriter.Rewrite(info.ParameterTypes[parameter])); }
protected Type GetReturnType(MemberInfo member) { if (member is MethodInfo m) { IExtendedMethodTypeInfo info = m.GetExtendedMethodTypeInfo(); _methods.TryAdd(m, info); return(ExtendedTypeRewriter.Rewrite(info.ReturnType)); } else if (member is PropertyInfo p) { return(ExtendedTypeRewriter.Rewrite(p.GetExtendedReturnType())); } else { throw new ArgumentException( TypeResources.DefaultTypeInspector_MemberInvalid, nameof(member)); } }
public ClrTypeReference Rewrite() { if (Nullable is null) { return(this); } var nullable = new Utilities.Nullable[Nullable.Length]; for (var i = 0; i < Nullable.Length; i++) { nullable[i] = Nullable[i] ? Utilities.Nullable.Yes : Utilities.Nullable.No; } ExtendedType extendedType = ExtendedType.FromType(Type); return(With( type: ExtendedTypeRewriter.Rewrite(extendedType, nullable), nullable: null)); }