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); }
/// <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); }