protected void TransferInjectionPointsTo(ManagedComponent component, GenericResolver.Resolution resolution) { component.AddMemberInjectionPoints(_memberInjectionPoints.Select(x => x.TranslateGenericArguments(component, resolution.GenericParameterTranslations)) .ToArray()); component.AddInjectableMethods(_injectableMethods.Select(m => m.TranslateGenericArguments(component, resolution.GenericParameterTranslations)) .Cast <InjectableMethod>().ToArray()); }
protected override AbstractProducer TranslateTypes(GenericResolver.Resolution resolution) { var resolvedMethod = GenericUtils.TranslateMethodGenericArguments(_method.Method, resolution.GenericParameterTranslations); if (resolvedMethod == null || GenericUtils.MemberContainsGenericArguments(resolvedMethod)) { return(null); } return(new ProducerMethod(DeclaringComponent.Resolve(resolvedMethod.DeclaringType), resolvedMethod, Annotations, Manager)); }
protected EventObserverMethod TranslateTypes(GenericResolver.Resolution resolution) { var resolvedMethod = GenericUtils.TranslateMethodGenericArguments(_method.Method, resolution.GenericParameterTranslations); if (resolvedMethod == null || GenericUtils.MemberContainsGenericArguments(resolvedMethod)) { return(null); } var resolvedParam = resolvedMethod.GetParameters()[_parameter.Position]; var resolvedComponent = _method.Component.Resolve(resolvedMethod.DeclaringType); return(new EventObserverMethod(resolvedComponent, resolvedParam, _annotations)); }
protected abstract AbstractProducer TranslateTypes(GenericResolver.Resolution resolution);
protected override AbstractProducer TranslateTypes(GenericResolver.Resolution resolution) { var resolvedProperty = GenericUtils.TranslatePropertyType(_property, resolution.GenericParameterTranslations); return(new ProducerProperty(DeclaringComponent.Resolve(resolvedProperty.DeclaringType), resolvedProperty, Annotations, Manager)); }
protected override AbstractProducer TranslateTypes(GenericResolver.Resolution resolution) { var resolvedField = GenericUtils.TranslateFieldType(_field, resolution.GenericParameterTranslations); return(new ProducerField(DeclaringComponent.Resolve(resolvedField.DeclaringType), resolvedField, Annotations, Manager)); }