public override object BuildUp(IBuilderContext context, object buildKey, object existing)
        {
            object buildObject = base.BuildUp(context, buildKey, existing);

            IPolicyInjectionPolicy policyInjectionPolicy = context.Policies.Get <IPolicyInjectionPolicy>(buildKey);

            if (policyInjectionPolicy != null && policyInjectionPolicy.ApplyPolicies)
            {
                policyInjectionPolicy.SetPolicyConfigurationSource(GetConfigurationSource(context));

                Type typeToBuild;
                TryGetTypeFromBuildKey(buildKey, out typeToBuild);

                object newBuildObject = policyInjectionPolicy.ApplyProxy(buildObject, typeToBuild);

                if (!Object.ReferenceEquals(newBuildObject, buildObject))
                {
                    IProxyable proxyable = newBuildObject as IProxyable;

                    if (proxyable != null)
                    {
                        proxyable.Proxy = newBuildObject;
                    }
                }

                buildObject = newBuildObject;
            }

            return(buildObject);
        }
Exemple #2
0
        /// <summary>
        /// Creates an object, running it through PIAB if the policy set applies.
        /// </summary>
        /// <param name="context">ObjectBuilder context.</param>
        /// <param name="typeToBuild">Type to create.</param>
        /// <param name="existing">An existing object (to wrap if necessary).</param>
        /// <param name="idToBuild">ObjectBuilder ID to create.</param>
        /// <returns>The created object.</returns>
        public override object BuildUp(IBuilderContext context, Type typeToBuild, object existing, string idToBuild)
        {
            object buildObject = base.BuildUp(context, typeToBuild, existing, idToBuild);

            IPolicyInjectionPolicy policyInjectionPolicy = context.Policies.Get <IPolicyInjectionPolicy>(typeToBuild, idToBuild);

            if (policyInjectionPolicy != null && policyInjectionPolicy.ApplyPolicies)
            {
                policyInjectionPolicy.SetPolicyConfigurationSource(GetConfigurationSource(context));

                buildObject = policyInjectionPolicy.ApplyProxy(buildObject, typeToBuild);
                TraceBuildUp(context, typeToBuild, idToBuild, Resources.TracePoliciesApplied);
            }

            return(buildObject);
        }