コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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));
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        /// <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));
                }
            }
        }
コード例 #5
0
 /// <summary>
 /// See <see cref="ReflectionStrategy{T}.MemberRequiresProcessing"/> for more information.
 /// </summary>
 protected override bool MemberRequiresProcessing(IReflectionMemberInfo <ConstructorInfo> member)
 {
     return(true);
 }
コード例 #6
0
 /// <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);
 }
コード例 #7
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);
 }
コード例 #8
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);
コード例 #9
0
 /// <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);
 }
コード例 #11
0
 protected override bool MemberRequiresProcessing(IReflectionMemberInfo <MethodInfo> member)
 {
     MemberRequiresProcessingCalledCount++;
     return(base.MemberRequiresProcessing(member));
 }