static public IResolvable AsResolvable(this ParameterInfo parameterInfo) { Attribute[] attributes = parameterInfo.Attributes(); IResolvable resolvable = attributes.ResolvableAttribute().GetResolvable(parameterInfo.ParameterType, attributes); if (parameterInfo.HasDefaultValue) { resolvable = new DefaultableResolvable(resolvable, parameterInfo.DefaultValue); } return(resolvable); }
static public ResolvableInjectable <IResolvable, InjectableParameter> AsResolvableInjectable(this ParameterInfo parameterInfo) { Attribute[] attributes = parameterInfo.Attributes(); ResolvableAttributeBase resolvableAttribute = attributes.ResolvableAttribute(); var injectable = new InjectableParameter(resolvableAttribute.GetInjectionScenario(parameterInfo.ParameterType), parameterInfo); IResolvable resolvable = resolvableAttribute.GetResolvable(injectable.Type, attributes); if (injectable.HasDefaultValue) { resolvable = new DefaultableResolvable(resolvable, injectable.DefaultValue); } return(new ResolvableInjectable <IResolvable, InjectableParameter>(resolvable, injectable)); }
static public InjectableParameter AsInjectable(this ParameterInfo parameterInfo) { IInjectionExpression injectionExpression = parameterInfo.Attributes().ResolvableAttribute().GetInjectionScenario(parameterInfo.ParameterType); return(new InjectableParameter(injectionExpression, parameterInfo)); }