protected virtual ParameterType ResolveParameterType(ParameterInfo parameterInfo, string url) { if (parameterInfo.HasAttribute<ContentAttribute>()) { return ParameterType.Content; } return url.Contains(CreateRouteSegmentId(parameterInfo.Name)) ? ParameterType.Route : ParameterType.Query; }
static InjectableInfo CreateForConstructorParam( Type enclosingType, ParameterInfo paramInfo) { var injectAttr = paramInfo.Attribute<InjectAttribute>(); return new InjectableInfo() { Optional = paramInfo.HasAttribute(typeof(InjectOptionalAttribute)), Identifier = (injectAttr == null ? null : injectAttr.Identifier), SourceName = paramInfo.Name, ContractType = paramInfo.ParameterType, EnclosingType = enclosingType, }; }
static InjectableInfo CreateInjectableInfoForParam( Type parentType, ParameterInfo paramInfo) { var identifier = paramInfo.AllAttributes<InjectAttribute>().Select(x => x.Identifier) .Concat(paramInfo.AllAttributes<InjectOptionalAttribute>().Select(x => x.Identifier)).FirstOrDefault(); return new InjectableInfo( paramInfo.HasAttribute(typeof(InjectOptionalAttribute)), identifier, paramInfo.Name, paramInfo.ParameterType, parentType, null); }
internal Parameter(ParameterInfo parameter) { Debug.Assert(parameter != null); Names = new List<string>(); // Names are stored as lower-case. // The first available name is the parameters's original name. // Names.Add(parameter.Name.ToLowerInvariant()); ParameterInfo = parameter; Required = parameter.HasAttribute<RequiredAttribute>(); if (parameter.HasAttribute<DefaultValueAttribute>()) { Default = parameter.GetAttribute<DefaultValueAttribute>().DefaultValue; } if (parameter.HasAttribute<DefaultProviderAttribute>()) { DefaultProvider = (DefaultProvider)Activator.CreateInstance( parameter.GetAttribute<DefaultProviderAttribute>().DefaultProviderType); } if (parameter.HasAttribute<DescriptionAttribute>()) { Description = parameter.GetAttribute<DescriptionAttribute>().Description; } if (parameter.HasAttribute<AliasesAttribute>()) { Names.AddRange(parameter.GetAttribute<AliasesAttribute>().Aliases.ToLowerInvariant().CommaSplit()); } if (parameter.HasAttribute<SeparatorAttribute>()) { Separator = parameter.GetAttribute<SeparatorAttribute>().Separator; } }
private static string GetType( ParameterInfo parameter ) { bool isParams = parameter.ParameterType.IsArray && parameter.HasAttribute<ParamArrayAttribute>(); string prefix = isParams ? "params " : string.Empty; return prefix + parameter.ParameterType.Name(); }