// Helper methods for adding and removing the tracker policy.
 /// <summary>
 /// Get an instance that implements <see cref="IDependencyResolverTrackerPolicy"/>,
 /// either the current one in the policy set or creating a new one if it doesn't
 /// exist.
 /// </summary>
 /// <param name="policies">Policy list to look up from.</param>
 /// <param name="buildKey">Build key to track.</param>
 /// <returns>The resolver tracker.</returns>
 public static IDependencyResolverTrackerPolicy GetTracker(IPolicyList policies, object buildKey)
 {
     IDependencyResolverTrackerPolicy tracker =
         policies.Get<IDependencyResolverTrackerPolicy>(buildKey);
     if (tracker == null)
     {
         tracker = new DependencyResolverTrackerPolicy();
         policies.Set<IDependencyResolverTrackerPolicy>(tracker, buildKey);
     }
     return tracker;
 }
Ejemplo n.º 2
0
        private SelectedProperty CreateSelectedProperty(IBuilderContext context, IPolicyList resolverPolicyDestination, PropertyInfo property)
        {
            string           key    = Guid.NewGuid().ToString();
            SelectedProperty result = new SelectedProperty(property, key);

            resolverPolicyDestination.Set <IDependencyResolverPolicy>(CreateResolver(property), key);
            DependencyResolverTrackerPolicy.TrackKey(context.PersistentPolicies,
                                                     context.BuildKey,
                                                     key);
            return(result);
        }
Ejemplo n.º 3
0
        // Helper methods for adding and removing the tracker policy.

        /// <summary>
        /// Get an instance that implements <see cref="IDependencyResolverTrackerPolicy"/>,
        /// either the current one in the policy set or creating a new one if it doesn't
        /// exist.
        /// </summary>
        /// <param name="policies">Policy list to look up from.</param>
        /// <param name="buildKey">Build key to track.</param>
        /// <returns>The resolver tracker.</returns>
        public static IDependencyResolverTrackerPolicy GetTracker(IPolicyList policies, object buildKey)
        {
            IDependencyResolverTrackerPolicy tracker =
                policies.Get <IDependencyResolverTrackerPolicy>(buildKey);

            if (tracker == null)
            {
                tracker = new DependencyResolverTrackerPolicy();
                policies.Set <IDependencyResolverTrackerPolicy>(tracker, buildKey);
            }
            return(tracker);
        }
        private SelectedConstructor CreateSelectedConstructor(IBuilderContext context, ConstructorInfo ctor)
        {
            SelectedConstructor result = new SelectedConstructor(ctor);

            foreach (ParameterInfo param in ctor.GetParameters())
            {
                string key = Guid.NewGuid().ToString();
                IDependencyResolverPolicy policy = CreateResolver(param);
                context.PersistentPolicies.Set <IDependencyResolverPolicy>(policy, key);
                DependencyResolverTrackerPolicy.TrackKey(context.PersistentPolicies,
                                                         context.BuildKey,
                                                         key);
                result.AddParameterKey(key);
            }
            return(result);
        }
        private SelectedMethod CreateSelectedMethod(IBuilderContext context, IPolicyList resolverPolicyDestination, MethodInfo method)
        {
            SelectedMethod result = new SelectedMethod(method);

            foreach (ParameterInfo parameter in method.GetParameters())
            {
                string key = Guid.NewGuid().ToString();
                IDependencyResolverPolicy resolver = CreateResolver(parameter);
                resolverPolicyDestination.Set <IDependencyResolverPolicy>(resolver, key);
                DependencyResolverTrackerPolicy.TrackKey(context.PersistentPolicies,
                                                         context.BuildKey,
                                                         key);
                result.AddParameterKey(key);
            }
            return(result);
        }