static private ResolvableInjectable <IResolvable <TResolvableValue>, TInjectable, TTarget, TResolvableValue, TInjectableValue> AsResolvableInjectableBase <TInjectable, TTarget, TResolvableValue, TInjectableValue>(MemberInfo memberInfo, Type defaultType, Func <IInjectionExpression, TInjectable> injectableFactory) where TInjectable : IInjectable <TTarget, TInjectableValue> where TResolvableValue : TInjectableValue { Attribute[] attributes = memberInfo.Attributes(); ResolvableAttributeBase resolvableAttribute = attributes.ResolvableAttribute(); IResolvable <TResolvableValue> resolvable = resolvableAttribute.GetResolvable <TResolvableValue>(defaultType, attributes); TInjectable injectable = injectableFactory(resolvableAttribute.GetInjectionScenario(defaultType)); return(new ResolvableInjectable <IResolvable <TResolvableValue>, TInjectable, TTarget, TResolvableValue, TInjectableValue>(resolvable, injectable)); }
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)); }