Exemplo n.º 1
0
        public static string Get(this ArgumentModifier access)
        {
            switch (access)
            {
            case ArgumentModifier.None:
                return("");

            case ArgumentModifier.Ref:
                return("ref");

            case ArgumentModifier.Out:
                return("out");
            }
            return("");
        }
        // 构造参数信息
        private ArgumentDescription GetParameterInfo(ParameterInfo parameterInfo)
        {
            Type parameterType = parameterInfo.ParameterType;

            AddToAssemblyMapping(parameterType);
            DescriptionAttribute descriptionAttribute = parameterInfo.GetCustomAttribute <DescriptionAttribute>();
            string descriptionStr = (null == descriptionAttribute) ? string.Empty : descriptionAttribute.Description;

            TypeDescription typeDescription = new TypeDescription()
            {
                AssemblyName = parameterType.Assembly.GetName().Name,
                Category     = string.Empty,
                Description  = descriptionStr,
                Name         = GetParamTypeName(parameterType),
                Namespace    = GetNamespace(parameterType)
            };

            ArgumentModifier modifier = ArgumentModifier.None;

            if (parameterInfo.ParameterType.IsByRef)
            {
                modifier = parameterInfo.IsOut ? ArgumentModifier.Out : ArgumentModifier.Ref;
            }
            ArgumentDescription paramDescription = new ArgumentDescription()
            {
                Name            = parameterInfo.Name,
                ArgumentType    = GetKindOfType(parameterType),
                Description     = descriptionStr,
                Modifier        = modifier,
                DefaultValue    = null,
                TypeDescription = typeDescription,
                IsOptional      = parameterInfo.IsOptional
            };

            if (parameterInfo.HasDefaultValue)
            {
                paramDescription.DefaultValue = parameterInfo.DefaultValue?.ToString() ?? CommonConst.NullValue;
            }
            return(paramDescription);
        }
Exemplo n.º 3
0
 public Argument(ArgumentModifier modifier, Expression expression)
 {
     Modifier   = modifier;
     Expression = expression;
 }
 /// <summary>
 /// Converts <see cref="ArgumentModifier"/> into string.
 /// </summary>
 /// <param name="modifier"></param>
 /// <returns>String of <see cref="ArgumentModifier"/></returns>
 public static string ToModifierString(this ArgumentModifier modifier)
 {
     return(StringMap[modifier]);
 }
 /// <summary>
 /// Creates an <see cref="ArgumentInfo"/>.
 /// </summary>
 /// <param name="mod">Modifier</param>
 /// <param name="type"><see cref="TypeInfo"/></param>
 /// <param name="name">Argument name</param>
 /// <returns><see cref="ArgumentInfo"/></returns>
 public static ArgumentInfo Arg(ArgumentModifier mod, TypeInfo type, string name)
 {
     return(new ArgumentInfo(type, name, mod));
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="type">Argument type</param>
 /// <param name="name">Argument name</param>
 /// <param name="modifier">Argument modifier (Default is <see cref="ArgumentModifier.None"/>)</param>
 /// <exception cref="ArgumentNullException">If <paramref name="type"/> is null</exception>
 public ArgumentInfo(TypeInfo type, string name, ArgumentModifier modifier = ArgumentModifier.None)
 {
     this.Type     = type ?? throw new ArgumentNullException();
     this.Name     = name;
     this.Modifier = modifier;
 }