Skip to content

Commit 6accc14

Browse files
committed
tidy up optimized code
1 parent 2954eb4 commit 6accc14

File tree

20 files changed

+51
-106
lines changed

20 files changed

+51
-106
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="CommonServiceLocator" version="1.2" targetFramework="net45" />
3+
<package id="CommonServiceLocator" version="1.0" targetFramework="net45" />
44
</packages>

source/Unity.Interception/Src/ContainerIntegration/ObjectBuilder/TypeInterceptionStrategy.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ private static SelectedConstructor FindNewConstructor(SelectedConstructor origin
145145

146146
SelectedConstructor newConstructor = new SelectedConstructor(newConstructorInfo);
147147

148-
foreach (var resolver in originalConstructor.GetParameterResolvers())
148+
foreach (IDependencyResolverPolicy resolver in originalConstructor.GetParameterResolvers())
149149
{
150150
newConstructor.AddParameterResolver(resolver);
151151
}

source/Unity/Src/ObjectBuilder/BuilderContext.cs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class BuilderContext : IBuilderContext
1919
readonly NamedTypeBuildKey originalBuildKey;
2020
private readonly IPolicyList persistentPolicies;
2121
readonly IPolicyList policies;
22-
private CompositeResolverOverride resolverOverrides = new CompositeResolverOverride();
22+
private CompositeResolverOverride resolverOverrides = new CompositeResolverOverride();
2323

2424
/// <summary>
2525
/// Initialize a new instance of the <see cref="BuilderContext"/> class.
@@ -147,7 +147,6 @@ public IPolicyList Policies
147147
get { return policies; }
148148
}
149149

150-
151150
/// <summary>
152151
/// Gets the collection of <see cref="IRequiresRecovery"/> objects
153152
/// that need to execute in event of an exception.
@@ -207,11 +206,9 @@ public object NewBuildUp(NamedTypeBuildKey newBuildKey)
207206
this.ChildContext =
208207
new BuilderContext(chain, lifetime, persistentPolicies, policies, newBuildKey, null)
209208
{
210-
resolverOverrides = resolverOverrides
209+
resolverOverrides = this.resolverOverrides
211210
};
212211

213-
//ChildContext.AddResolverOverrides(Sequence.Collect(resolverOverrides));
214-
215212
object result = this.ChildContext.Strategies.ExecuteBuildUp(this.ChildContext);
216213

217214
this.ChildContext = null;
@@ -237,11 +234,9 @@ public object NewBuildUp(NamedTypeBuildKey newBuildKey, Action<IBuilderContext>
237234
ChildContext =
238235
new BuilderContext(chain, lifetime, persistentPolicies, policies, newBuildKey, null)
239236
{
240-
resolverOverrides = resolverOverrides
237+
resolverOverrides = this.resolverOverrides
241238
};
242239

243-
//ChildContext.AddResolverOverrides(Sequence.Collect(resolverOverrides));
244-
245240
childCustomizationBlock(ChildContext);
246241

247242
object result = ChildContext.Strategies.ExecuteBuildUp(ChildContext);

source/Unity/Src/ObjectBuilder/Policies/PolicyList.cs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,11 @@ namespace Microsoft.Practices.ObjectBuilder2
1414
/// </summary>
1515
public class PolicyList : IPolicyList
1616
{
17-
private static readonly PolicyKeyEqualityComparer Comparer = new PolicyKeyEqualityComparer();
1817
private readonly IPolicyList innerPolicyList;
1918
private readonly object lockObject = new object();
2019
// Does not need to be volatile. It is fine if a slightly out of date version of the current snapshot is read
2120
// as long as replacing a snapshot when adding or removing policies is thread safe
22-
private Dictionary<PolicyKey, IBuilderPolicy> policies = new Dictionary<PolicyKey, IBuilderPolicy>(Comparer);
21+
private Dictionary<PolicyKey, IBuilderPolicy> policies = new Dictionary<PolicyKey, IBuilderPolicy>(PolicyKeyEqualityComparer.Default);
2322

2423
/// <summary>
2524
/// Initialize a new instance of a <see cref="PolicyList"/> class.
@@ -73,7 +72,7 @@ public void ClearAll()
7372
{
7473
lock (lockObject)
7574
{
76-
this.policies = new Dictionary<PolicyKey, IBuilderPolicy>(Comparer);
75+
this.policies = new Dictionary<PolicyKey, IBuilderPolicy>(PolicyKeyEqualityComparer.Default);
7776
}
7877
}
7978

@@ -211,7 +210,7 @@ public void SetDefault(Type policyInterface,
211210

212211
private Dictionary<PolicyKey, IBuilderPolicy> ClonePolicies()
213212
{
214-
return new Dictionary<PolicyKey, IBuilderPolicy>(policies, Comparer);
213+
return new Dictionary<PolicyKey, IBuilderPolicy>(policies, PolicyKeyEqualityComparer.Default);
215214
}
216215

217216
private static bool TryGetType(object buildKey, out Type type)
@@ -338,15 +337,12 @@ private static int SafeGetHashCode(object obj)
338337
{
339338
return obj != null ? obj.GetHashCode() : 0;
340339
}
341-
342-
public bool Equals(PolicyKey other)
343-
{
344-
return this == other;
345-
}
346340
}
347341

348342
class PolicyKeyEqualityComparer : IEqualityComparer<PolicyKey>
349343
{
344+
public static readonly PolicyKeyEqualityComparer Default = new PolicyKeyEqualityComparer();
345+
350346
public bool Equals(PolicyKey x, PolicyKey y)
351347
{
352348
return x.PolicyType == y.PolicyType &&

source/Unity/Src/ObjectBuilder/Strategies/BuildPlan/Creation/ConstructorSelectorPolicyBase.cs

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public abstract class ConstructorSelectorPolicyBase<TInjectionConstructorMarkerA
2525
/// <param name="resolverPolicyDestination">The <see cref='IPolicyList'/> to add any
2626
/// generated resolver objects into.</param>
2727
/// <returns>The chosen constructor.</returns>
28-
[SuppressMessage("Microsoft.Design", "CA1062:ValidateArgumentsOfPublicMethods", Justification="Validation done by Guard class")]
28+
[SuppressMessage("Microsoft.Design", "CA1062:ValidateArgumentsOfPublicMethods", Justification = "Validation done by Guard class")]
2929
public SelectedConstructor SelectConstructor(IBuilderContext context, IPolicyList resolverPolicyDestination)
3030
{
3131
Guard.ArgumentNotNull(context, "context");
@@ -41,17 +41,12 @@ public SelectedConstructor SelectConstructor(IBuilderContext context, IPolicyLis
4141
private SelectedConstructor CreateSelectedConstructor(IBuilderContext context, IPolicyList resolverPolicyDestination, ConstructorInfo ctor)
4242
{
4343
var result = new SelectedConstructor(ctor);
44-
45-
foreach(ParameterInfo param in ctor.GetParameters())
44+
45+
foreach (ParameterInfo param in ctor.GetParameters())
4646
{
47-
string key = Guid.NewGuid().ToString();
48-
var policy = CreateResolver(param);
49-
resolverPolicyDestination.Set(policy, key);
50-
DependencyResolverTrackerPolicy.TrackKey(resolverPolicyDestination,
51-
context.BuildKey,
52-
key);
53-
result.AddParameterResolver(policy);
47+
result.AddParameterResolver(this.CreateResolver(param));
5448
}
49+
5550
return result;
5651
}
5752

@@ -72,7 +67,7 @@ private static ConstructorInfo FindInjectionConstructor(Type typeToConstruct)
7267
typeof(TInjectionConstructorMarkerAttribute),
7368
true))
7469
.ToArray();
75-
switch(injectionConstructors.Length)
70+
switch (injectionConstructors.Length)
7671
{
7772
case 0:
7873
return null;
@@ -96,7 +91,7 @@ private static ConstructorInfo FindLongestConstructor(Type typeToConstruct)
9691
ConstructorInfo[] constructors = typeToConstructReflector.InstanceConstructors.ToArray();
9792
Array.Sort(constructors, new ConstructorLengthComparer());
9893

99-
switch(constructors.Length)
94+
switch (constructors.Length)
10095
{
10196
case 0:
10297
return null;
@@ -106,7 +101,7 @@ private static ConstructorInfo FindLongestConstructor(Type typeToConstruct)
106101

107102
default:
108103
int paramLength = constructors[0].GetParameters().Length;
109-
if(constructors[1].GetParameters().Length == paramLength)
104+
if (constructors[1].GetParameters().Length == paramLength)
110105
{
111106
throw new InvalidOperationException(
112107
string.Format(

source/Unity/Src/ObjectBuilder/Strategies/BuildPlan/Creation/SelectedMemberWithParameters.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,26 @@ namespace Microsoft.Practices.ObjectBuilder2
66
{
77
/// <summary>
88
/// Base class for return of selector policies that need
9-
/// to keep track of a set of parameter keys.
9+
/// to keep track of a set of parameter resolvers.
1010
/// </summary>
1111
public class SelectedMemberWithParameters
1212
{
1313
private readonly List<IDependencyResolverPolicy> parameterResolvers = new List<IDependencyResolverPolicy>();
1414

1515
/// <summary>
16-
/// Adds the parameter resolver.
16+
/// Adds the parameter resolver. Resolvers are assumed
17+
/// to be in the order of the parameters to the member.
1718
/// </summary>
18-
/// <param name="newKey">The new key.</param>
19-
public void AddParameterResolver(IDependencyResolverPolicy newKey)
19+
/// <param name="newResolver">The new resolver.</param>
20+
public void AddParameterResolver(IDependencyResolverPolicy newResolver)
2021
{
21-
parameterResolvers.Add(newKey);
22+
parameterResolvers.Add(newResolver);
2223
}
2324

2425
/// <summary>
2526
/// Gets the parameter resolvers.
2627
/// </summary>
27-
/// <returns></returns>
28+
/// <returns>An array with the parameter resolvers.</returns>
2829
public IDependencyResolverPolicy[] GetParameterResolvers()
2930
{
3031
return parameterResolvers.ToArray();

source/Unity/Src/ObjectBuilder/Strategies/BuildPlan/DynamicMethod/Creation/DynamicMethodConstructorStrategy.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,14 @@
22

33
using System;
44
using System.Collections.Generic;
5+
using System.Diagnostics.CodeAnalysis;
6+
using System.Globalization;
57
using System.Linq;
68
using System.Linq.Expressions;
7-
using System.Text;
89
using System.Reflection;
9-
using System.Threading.Tasks;
10-
using Microsoft.Practices.ObjectBuilder2;
11-
using System.Globalization;
10+
using Microsoft.Practices.Unity;
1211
using Microsoft.Practices.Unity.Properties;
13-
using System.Diagnostics.CodeAnalysis;
1412
using Microsoft.Practices.Unity.Utility;
15-
using Microsoft.Practices.Unity;
1613

1714
namespace Microsoft.Practices.ObjectBuilder2
1815
{
@@ -169,7 +166,7 @@ private IEnumerable<Expression> BuildConstructionParameterExpressions(DynamicBui
169166
int i = 0;
170167
var constructionParameters = selectedConstructor.Constructor.GetParameters();
171168

172-
foreach (var parameterResolver in selectedConstructor.GetParameterResolvers())
169+
foreach (IDependencyResolverPolicy parameterResolver in selectedConstructor.GetParameterResolvers())
173170
{
174171
yield return buildContext.CreateParameterExpression(
175172
parameterResolver,

source/Unity/Src/ObjectBuilder/Strategies/BuildPlan/DynamicMethod/DynamicBuildPlanGenerationContext.cs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ public class DynamicBuildPlanGenerationContext
1919
private readonly ParameterExpression contextParameter;
2020
private readonly Queue<Expression> buildPlanExpressions;
2121

22-
private static readonly MethodInfo GetResolveDependencyMethod =
22+
private static readonly MethodInfo ResolveDependencyMethod =
2323
StaticReflection.GetMethodInfo((IDependencyResolverPolicy r) => r.Resolve(null));
2424

2525
private static readonly MethodInfo GetResolverMethod =
26-
StaticReflection.GetMethodInfo(() => GetResolver(null, null, null as IDependencyResolverPolicy));
26+
StaticReflection.GetMethodInfo(() => GetResolver(null, null, (IDependencyResolverPolicy)null));
2727

2828
private static readonly MemberInfo GetBuildContextExistingObjectProperty =
2929
StaticReflection.GetMemberInfo((IBuilderContext c) => c.Existing);
@@ -120,7 +120,7 @@ internal Expression GetResolveDependencyExpression(Type dependencyType, IDepende
120120
ContextParameter,
121121
Expression.Constant(dependencyType, typeof(Type)),
122122
Expression.Constant(resolver, typeof(IDependencyResolverPolicy))),
123-
GetResolveDependencyMethod,
123+
ResolveDependencyMethod,
124124
ContextParameter),
125125
dependencyType);
126126
}
@@ -174,12 +174,10 @@ private Expression SaveCurrentOperationExpression(ParameterExpression saveExpres
174174
/// <param name="resolverKey">Key the resolver was stored under.</param>
175175
/// <returns>The found dependency resolver.</returns>
176176
[SuppressMessage("Microsoft.Design", "CA1062:ValidateArgumentsOfPublicMethods", Justification = "Validation done by Guard class")]
177+
[Obsolete("Resolvers are no longer stored as policies.")]
177178
public static IDependencyResolverPolicy GetResolver(IBuilderContext context, Type dependencyType, string resolverKey)
178179
{
179-
Guard.ArgumentNotNull(context, "context");
180-
181-
var resolver = context.GetOverriddenResolver(dependencyType);
182-
return resolver ?? context.Policies.Get<IDependencyResolverPolicy>(resolverKey);
180+
throw new NotSupportedException("This method is no longer used");
183181
}
184182

185183
/// <summary>

source/Unity/Src/ObjectBuilder/Strategies/BuildPlan/DynamicMethod/Method/DynamicMethodCallStrategy.cs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
22

3-
using System;
43
using System.Collections.Generic;
54
using System.Diagnostics.CodeAnalysis;
65
using System.Globalization;
@@ -12,8 +11,6 @@
1211

1312
namespace Microsoft.Practices.ObjectBuilder2
1413
{
15-
using System.Runtime.CompilerServices;
16-
1714
/// <summary>
1815
/// A <see cref="BuilderStrategy"/> that generates IL to call
1916
/// chosen methods (as specified by the current <see cref="IMethodSelectorPolicy"/>)
@@ -39,7 +36,7 @@ public override void PreBuildUp(IBuilderContext context)
3936
Guard.ArgumentNotNull(context, "context");
4037

4138
var dynamicBuildContext = (DynamicBuildPlanGenerationContext)(context.Existing);
42-
39+
4340
IPolicyList resolverPolicyDestination;
4441
var selector = context.Policies.Get<IMethodSelectorPolicy>(context.BuildKey, out resolverPolicyDestination);
4542

@@ -75,14 +72,14 @@ public override void PreBuildUp(IBuilderContext context)
7572
}
7673
}
7774

78-
75+
7976

8077
private IEnumerable<Expression> BuildMethodParameterExpressions(DynamicBuildPlanGenerationContext context, SelectedMethod method, string methodSignature)
8178
{
8279
int i = 0;
8380
var methodParameters = method.Method.GetParameters();
8481

85-
foreach (var parameterResolver in method.GetParameterResolvers())
82+
foreach (IDependencyResolverPolicy parameterResolver in method.GetParameterResolvers())
8683
{
8784
yield return context.CreateParameterExpression(
8885
parameterResolver,
@@ -94,8 +91,6 @@ private IEnumerable<Expression> BuildMethodParameterExpressions(DynamicBuildPlan
9491
context.ContextParameter));
9592
i++;
9693
}
97-
98-
yield break;
9994
}
10095

10196
private static void GuardMethodIsNotOpenGeneric(MethodInfo method)

source/Unity/Src/ObjectBuilder/Strategies/BuildPlan/Method/MethodSelectorPolicyBase.cs

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public virtual IEnumerable<SelectedMethod> SelectMethods(IBuilderContext context
3232

3333
foreach (MethodInfo method in candidateMethods)
3434
{
35-
if(method.IsDefined(typeof(TMarkerAttribute), false))
35+
if (method.IsDefined(typeof(TMarkerAttribute), false))
3636
{
3737
yield return CreateSelectedMethod(context, resolverPolicyDestination, method);
3838
}
@@ -42,16 +42,11 @@ public virtual IEnumerable<SelectedMethod> SelectMethods(IBuilderContext context
4242
private SelectedMethod CreateSelectedMethod(IBuilderContext context, IPolicyList resolverPolicyDestination, MethodInfo method)
4343
{
4444
var result = new SelectedMethod(method);
45-
foreach(ParameterInfo parameter in method.GetParameters())
45+
foreach (ParameterInfo parameter in method.GetParameters())
4646
{
47-
string key = Guid.NewGuid().ToString();
48-
var resolver = CreateResolver(parameter);
49-
resolverPolicyDestination.Set(resolver, key);
50-
DependencyResolverTrackerPolicy.TrackKey(context.PersistentPolicies,
51-
context.BuildKey,
52-
key);
53-
result.AddParameterResolver(resolver);
47+
result.AddParameterResolver(this.CreateResolver(parameter));
5448
}
49+
5550
return result;
5651
}
5752

0 commit comments

Comments
 (0)