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