/// <summary> /// See <see cref="ReflectionStrategy{T}.AddParametersToPolicy"/> for more information. /// </summary> protected override void AddParametersToPolicy(IBuilderContext context, Type typeToBuild, string idToBuild, IReflectionMemberInfo <ConstructorInfo> member, IEnumerable <IParameter> parameters) { ConstructorPolicy policy = new ConstructorPolicy(); foreach (IParameter parameter in parameters) { policy.AddParameter(parameter); } context.Policies.Set <ICreationPolicy>(policy, typeToBuild, idToBuild); }
/// <summary> /// See <see cref="ReflectionStrategy{T}.AddParametersToPolicy"/> for more information. /// </summary> protected override void AddParametersToPolicy(IBuilderContext context, Type typeToBuild, string idToBuild, IReflectionMemberInfo <MethodInfo> member, IEnumerable <IParameter> parameters) { MethodPolicy result = context.Policies.Get <IMethodPolicy>(typeToBuild, idToBuild) as MethodPolicy; if (result == null) { result = new MethodPolicy(); context.Policies.Set <IMethodPolicy>(result, typeToBuild, idToBuild); } result.Methods.Add(member.Name, new MethodCallInfo(member.MemberInfo, parameters)); }
private bool InnerMemberRequiresProcessing(IReflectionMemberInfo <TMemberInfo> member) { bool requires; if (!_memberRequiresProcessingCache.TryGetValue(member.MemberInfo, out requires)) { lock (_writeLockerMrp) { if (!_memberRequiresProcessingCache.TryGetValue(member.MemberInfo, out requires)) { Dictionary <TMemberInfo, bool> tempMemberRequiresProcessingCache = new Dictionary <TMemberInfo, bool>(_memberRequiresProcessingCache); requires = MemberRequiresProcessing(member); tempMemberRequiresProcessingCache.Add(member.MemberInfo, requires); _memberRequiresProcessingCache = tempMemberRequiresProcessingCache; } } } return(requires); }
/// <summary> /// See <see cref="ReflectionStrategy{T}.AddParametersToPolicy"/> for more information. /// </summary> protected override void AddParametersToPolicy(IBuilderContext context, Type typeToBuild, string idToBuild, IReflectionMemberInfo <PropertyInfo> member, IEnumerable <IParameter> parameters) { PropertySetterPolicy result = context.Policies.Get <IPropertySetterPolicy>(typeToBuild, idToBuild) as PropertySetterPolicy; if (result == null) { result = new PropertySetterPolicy(); context.Policies.Set <IPropertySetterPolicy>(result, typeToBuild, idToBuild); } foreach (IParameter parameter in parameters) { if (!result.Properties.ContainsKey(member.Name)) { result.Properties.Add(member.Name, new PropertySetterInfo(member.MemberInfo, parameter)); } } }
/// <summary> /// See <see cref="ReflectionStrategy{T}.MemberRequiresProcessing"/> for more information. /// </summary> protected override bool MemberRequiresProcessing(IReflectionMemberInfo <ConstructorInfo> member) { return(true); }
/// <summary> /// See <see cref="ReflectionStrategy{T}.MemberRequiresProcessing"/> for more information. /// </summary> protected override bool MemberRequiresProcessing(IReflectionMemberInfo <PropertyInfo> member) { return(member.GetCustomAttributes(typeof(ParameterAttribute), true).Length > 0); }
/// <summary> /// See <see cref="ReflectionStrategy{T}.MemberRequiresProcessing"/> for more information. /// </summary> protected override bool MemberRequiresProcessing(IReflectionMemberInfo <MethodInfo> member) { return(member.GetCustomAttributes(typeof(InjectionMethodAttribute), true).Length > 0); }
/// <summary> /// Abstract method which takes parameters and adds them to the appropriate policy. /// Must be overridden in derived classes. /// </summary> /// <param name="context">The build context.</param> /// <param name="typeToBuild">The type being built.</param> /// <param name="idToBuild">The ID being built.</param> /// <param name="member">The member that's being reflected over.</param> /// <param name="parameters">The parameters used to satisfy the member call.</param> protected abstract void AddParametersToPolicy(IBuilderContext context, Type typeToBuild, string idToBuild, IReflectionMemberInfo <TMemberInfo> member, IEnumerable <IParameter> parameters);
/// <summary> /// Abstract method used to determine whether a member should be processed. Must be overridden /// in derived classes. /// </summary> /// <param name="member">The member being reflected over.</param> /// <returns>Returns true if the member should get injection; false otherwise.</returns> protected abstract bool MemberRequiresProcessing(IReflectionMemberInfo <TMemberInfo> member);
protected override bool MemberRequiresProcessing(IReflectionMemberInfo<ConstructorInfo> member) { MemberRequiresProcessingCalledCount++; return base.MemberRequiresProcessing(member); }
protected override bool MemberRequiresProcessing(IReflectionMemberInfo <MethodInfo> member) { MemberRequiresProcessingCalledCount++; return(base.MemberRequiresProcessing(member)); }