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));
     }
 }
Exemplo n.º 3
0
        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));
        }