internal ParameterName(ParameterInfo parameter, TypeNameFlag flags) { Parameter = parameter; TypeName = TypeNameFactory.Create(parameter.ParameterType, flags); Name = parameter.Name; if (parameter.IsOut) { Modifier = "out"; } else if (parameter.ParameterType.IsByRef) { if (!flags.Has(TypeNameFlag.ExplicitRef)) { Modifier = "ref"; } } else if (parameter.GetCustomAttributes(typeof(ParamArrayAttribute), false).Length > 0) { Modifier = "params"; } else { Modifier = null; } }
internal GenericParameterTypeName(Type type, TypeNameFlag flags) : base(type) { if (flags.Has(TypeNameFlag.OmitGenericParameter)) { Name = ""; } else { Name = type.Name; } }
internal RefTypeName(Type type, TypeNameFlag flags) : base(type) { ComponentType = TypeNameFactory.Create(type.GetElementType(), flags); if (flags.Has(TypeNameFlag.ExplicitRef)) { Sign = SignConstant.Ref; } else { Sign = null; } }
internal SimpleTypeName(Type type, TypeNameFlag flags) : base(type) { if (flags.Has(TypeNameFlag.FullPrimitive)) { Namespace = new Namespace(type.Namespace); Name = type.Name; } else { Namespace = Namespace.Empty; Name = SimpleNames[type]; } }
internal NullableTypeName(Type type, TypeNameFlag flags) : base(type) { var component = type.GetGenericArguments()[0]; var componentType = TypeNameFactory.Create(component, flags); if (flags.Has(TypeNameFlag.FullNullable)) { Namespace = new Namespace(type.Namespace); BaseNames = BaseNameList.Empty; Name = nameof(Sign); Generics = new GenericList { componentType }; Sign = null; } else { Namespace = componentType.Namespace; BaseNames = componentType.BaseNames; Name = componentType.Name; Generics = GenericList.Empty; Sign = SignConstant.Nullable; } }