Skip to content

Commit bc85cbd

Browse files
committed
Removing extension calls
1 parent 1dd2d76 commit bc85cbd

9 files changed

Lines changed: 63 additions & 58 deletions

src/ContainerIntegration/DefaultInterceptionBehavior.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,13 @@ public DefaultInterceptionBehavior(Type behaviorType)
5252
/// <param name="implementationType">Implementation type to set behaviors for.</param>
5353
/// <param name="name">Name type is registered under.</param>
5454
/// <returns>An instance of <see cref="InterceptionBehaviorsPolicy"/>.</returns>
55-
protected override InterceptionBehaviorsPolicy GetBehaviorsPolicy(IPolicyList policies, Type implementationType,
56-
string name)
55+
protected override InterceptionBehaviorsPolicy GetBehaviorsPolicy(IPolicyList policies, Type implementationType, string name)
5756
{
58-
var policy = policies.GetNoDefault<IInterceptionBehaviorsPolicy>(implementationType);
59-
if ((policy == null) || !(policy is InterceptionBehaviorsPolicy))
57+
var policy = policies.Get(implementationType, string.Empty, typeof(IInterceptionBehaviorsPolicy), out _);
58+
if (!(policy is InterceptionBehaviorsPolicy))
6059
{
6160
policy = new InterceptionBehaviorsPolicy();
62-
policies.Set(policy, implementationType);
61+
policies.Set(implementationType, string.Empty, typeof(IInterceptionBehaviorsPolicy), policy);
6362
}
6463
return (InterceptionBehaviorsPolicy)policy;
6564
}

src/ContainerIntegration/DefaultInterceptor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ private void AddDefaultInstanceInterceptor(Type typeToIntercept, IPolicyList pol
107107
policy = new ResolvedInstanceInterceptionPolicy(_interceptorKey);
108108
}
109109

110-
policies.Set(policy, typeToIntercept);
110+
policies.Set(typeToIntercept, string.Empty, typeof(IInstanceInterceptionPolicy), policy);
111111
}
112112

113113
private void AddDefaultTypeInterceptor(Type typeToIntercept, IPolicyList policies)
@@ -123,7 +123,7 @@ private void AddDefaultTypeInterceptor(Type typeToIntercept, IPolicyList policie
123123
policy = new ResolvedTypeInterceptionPolicy(_interceptorKey);
124124
}
125125

126-
policies.Set(policy, typeToIntercept);
126+
policies.Set(typeToIntercept, string.Empty, typeof(ITypeInterceptionPolicy), policy);
127127
}
128128
}
129129

src/ContainerIntegration/Interception.cs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,12 @@ public Interception SetInterceptorFor(Type typeToIntercept, string name, ITypeIn
5757
var key = new NamedTypeBuildKey(typeToIntercept, name);
5858

5959
var policy = new FixedTypeInterceptionPolicy(interceptor);
60-
Context.Policies.Set<ITypeInterceptionPolicy>(policy, key);
60+
Context.Policies.Set(key.Type, key.Name, typeof(ITypeInterceptionPolicy), policy);
6161

6262
// add policy injection behavior if using this configuration API to set the interceptor
6363
var interceptionBehaviorsPolicy = new InterceptionBehaviorsPolicy();
6464
interceptionBehaviorsPolicy.AddBehaviorKey(NamedTypeBuildKey.Make<PolicyInjectionBehavior>());
65-
Context.Policies.Set<IInterceptionBehaviorsPolicy>(interceptionBehaviorsPolicy, key);
65+
Context.Policies.Set(key.Type, key.Name, typeof(IInterceptionBehaviorsPolicy), interceptionBehaviorsPolicy);
6666

6767
return this;
6868
}
@@ -117,12 +117,12 @@ public Interception SetInterceptorFor(Type typeToIntercept, string name, IInstan
117117
var key = new NamedTypeBuildKey(typeToIntercept, name);
118118

119119
var policy = new FixedInstanceInterceptionPolicy(interceptor);
120-
Context.Policies.Set<IInstanceInterceptionPolicy>(policy, key);
120+
Context.Policies.Set(key.Type, key.Name, typeof(IInstanceInterceptionPolicy), policy);
121121

122122
// add policy injection behavior if using this configuration API to set the interceptor
123123
var interceptionBehaviorsPolicy = new InterceptionBehaviorsPolicy();
124124
interceptionBehaviorsPolicy.AddBehaviorKey(NamedTypeBuildKey.Make<PolicyInjectionBehavior>());
125-
Context.Policies.Set<IInterceptionBehaviorsPolicy>(interceptionBehaviorsPolicy, key);
125+
Context.Policies.Set(key.Type, key.Name, typeof(IInterceptionBehaviorsPolicy), interceptionBehaviorsPolicy);
126126

127127
return this;
128128
}
@@ -139,13 +139,14 @@ public Interception SetDefaultInterceptorFor(Type typeToIntercept, ITypeIntercep
139139
Guard.ArgumentNotNull(interceptor, "interceptor");
140140
GuardTypeInterceptable(typeToIntercept, interceptor);
141141

142-
Context.Policies.Set<ITypeInterceptionPolicy>(new FixedTypeInterceptionPolicy(interceptor), typeToIntercept);
142+
Context.Policies.Set(typeToIntercept, string.Empty, typeof(ITypeInterceptionPolicy),
143+
new FixedTypeInterceptionPolicy(interceptor));
143144

144145
// add policy injection behavior if using this configuration API to set the interceptor
145146
var interceptionBehaviorsPolicy = new InterceptionBehaviorsPolicy();
146147
interceptionBehaviorsPolicy.AddBehaviorKey(NamedTypeBuildKey.Make<PolicyInjectionBehavior>());
147-
Context.Policies.Set<IInterceptionBehaviorsPolicy>(interceptionBehaviorsPolicy, typeToIntercept);
148-
148+
Context.Policies.Set(typeToIntercept, string.Empty,
149+
typeof(IInterceptionBehaviorsPolicy), interceptionBehaviorsPolicy);
149150
return this;
150151
}
151152

@@ -206,12 +207,12 @@ public Interception SetDefaultInterceptorFor(Type typeToIntercept, IInstanceInte
206207
Guard.ArgumentNotNull(interceptor, "interceptor");
207208
GuardTypeInterceptable(typeToIntercept, interceptor);
208209

209-
Context.Policies.Set<IInstanceInterceptionPolicy>(new FixedInstanceInterceptionPolicy(interceptor), typeToIntercept);
210+
Context.Policies.Set(typeToIntercept, string.Empty, typeof(IInstanceInterceptionPolicy), new FixedInstanceInterceptionPolicy(interceptor));
210211

211212
// add policy injection behavior if using this configuration API to set the interceptor
212213
var interceptionBehaviorsPolicy = new InterceptionBehaviorsPolicy();
213214
interceptionBehaviorsPolicy.AddBehaviorKey(NamedTypeBuildKey.Make<PolicyInjectionBehavior>());
214-
Context.Policies.Set<IInterceptionBehaviorsPolicy>(interceptionBehaviorsPolicy, typeToIntercept);
215+
Context.Policies.Set(typeToIntercept, string.Empty, typeof(IInterceptionBehaviorsPolicy), interceptionBehaviorsPolicy);
215216

216217
return this;
217218
}

src/ContainerIntegration/InterceptionBehaviorBase.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,7 @@ public override void AddPolicies(Type serviceType, Type implementationType, stri
6969
var behaviorName = Guid.NewGuid().ToString();
7070
var newBehaviorKey = new NamedTypeBuildKey(_explicitBehavior.GetType(), behaviorName);
7171

72-
policies.Set<ILifetimePolicy>(lifetimeManager, newBehaviorKey);
73-
72+
policies.Set(newBehaviorKey.Type, newBehaviorKey.Name, typeof(ILifetimePolicy), lifetimeManager);
7473
InterceptionBehaviorsPolicy behaviorsPolicy = GetBehaviorsPolicy(policies, serviceType, name);
7574
behaviorsPolicy.AddBehaviorKey(newBehaviorKey);
7675
}

src/ContainerIntegration/Interceptor.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,18 +66,17 @@ public Interceptor(Type interceptorType)
6666
/// <param name="policies">Policy list to add policies to.</param>
6767
public override void AddPolicies(Type serviceType, Type implementationType, string name, IPolicyList policies)
6868
{
69-
var key = new NamedTypeBuildKey(serviceType, name);
7069
if (IsInstanceInterceptor)
7170
{
7271
var policy = CreateInstanceInterceptionPolicy();
73-
policies.Set(policy, key);
74-
policies.Clear<ITypeInterceptionPolicy>(key);
72+
policies.Set(serviceType, name, typeof(IInstanceInterceptionPolicy), policy);
73+
policies.Clear(serviceType, name, typeof(ITypeInterceptionPolicy));
7574
}
7675
else
7776
{
7877
var policy = CreateTypeInterceptionPolicy();
79-
policies.Set(policy, key);
80-
policies.Clear<IInstanceInterceptionPolicy>(key);
78+
policies.Set(serviceType, name, typeof(ITypeInterceptionPolicy), policy);
79+
policies.Clear(serviceType, name, typeof(IInstanceInterceptionPolicy));
8180
}
8281
}
8382

src/ContainerIntegration/ObjectBuilder/AdditionalInterfacesPolicy.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,17 @@ internal void AddAdditionalInterface(Type additionalInterface)
3333
_additionalInterfaces.Add(additionalInterface);
3434
}
3535

36-
internal static AdditionalInterfacesPolicy GetOrCreate(
37-
IPolicyList policies,
38-
Type typeToCreate,
39-
string name)
36+
internal static AdditionalInterfacesPolicy GetOrCreate(IPolicyList policies,
37+
Type typeToCreate,
38+
string name)
4039
{
4140
NamedTypeBuildKey key = new NamedTypeBuildKey(typeToCreate, name);
4241
IAdditionalInterfacesPolicy policy =
43-
policies.GetNoDefault<IAdditionalInterfacesPolicy>(key);
44-
if ((policy == null) || !(policy is AdditionalInterfacesPolicy))
42+
(IAdditionalInterfacesPolicy)policies.Get(typeToCreate, name, typeof(IAdditionalInterfacesPolicy), out _);
43+
if (!(policy is AdditionalInterfacesPolicy))
4544
{
4645
policy = new AdditionalInterfacesPolicy();
47-
policies.Set(policy, key);
46+
policies.Set(typeToCreate, name, typeof(IAdditionalInterfacesPolicy), policy);
4847
}
4948
return (AdditionalInterfacesPolicy)policy;
5049
}

src/ContainerIntegration/ObjectBuilder/InstanceInterceptionStrategy.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ private static T FindInterceptionPolicy<T>(IBuilderContext context, bool probeOr
7676
where T : class, IBuilderPolicy
7777
{
7878
// First, try for an original build key
79-
var policy = context.Policies.Get<T>(context.OriginalBuildKey) ??
80-
context.Policies.Get<T>(context.OriginalBuildKey.Type);
79+
var policy = (T)context.Policies.GetOrDefault(typeof(T), context.OriginalBuildKey, out _) ??
80+
(T)context.Policies.GetOrDefault(typeof(T), context.OriginalBuildKey.Type, out _);
8181

8282
if (policy != null)
8383
{
@@ -90,8 +90,8 @@ private static T FindInterceptionPolicy<T>(IBuilderContext context, bool probeOr
9090
}
9191

9292
// Next, try the build type
93-
policy = context.Policies.Get<T>(context.BuildKey) ??
94-
context.Policies.Get<T>(context.BuildKey.Type);
93+
policy = (T)context.Policies.GetOrDefault(typeof(T), context.BuildKey, out _) ??
94+
(T)context.Policies.GetOrDefault(typeof(T), context.BuildKey.Type, out _);
9595

9696
return policy;
9797
}

src/ContainerIntegration/ObjectBuilder/InterceptionBehaviorsPolicy.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,12 @@ internal static InterceptionBehaviorsPolicy GetOrCreate(
6161
Type typeToCreate,
6262
string name)
6363
{
64-
NamedTypeBuildKey key = new NamedTypeBuildKey(typeToCreate, name);
6564
IInterceptionBehaviorsPolicy policy =
66-
policies.GetNoDefault<IInterceptionBehaviorsPolicy>(key);
67-
if (policy == null || !(policy is InterceptionBehaviorsPolicy))
65+
(IInterceptionBehaviorsPolicy)policies.Get(typeToCreate, name, typeof(IInterceptionBehaviorsPolicy), out _);
66+
if (!(policy is InterceptionBehaviorsPolicy))
6867
{
6968
policy = new InterceptionBehaviorsPolicy();
70-
policies.Set(policy, key);
69+
policies.Set(typeToCreate, name, typeof(IInterceptionBehaviorsPolicy), policy);
7170
}
7271
return (InterceptionBehaviorsPolicy)policy;
7372
}

src/ContainerIntegration/ObjectBuilder/TypeInterceptionStrategy.cs

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,10 @@ public override void PreBuildUp(IBuilderContext context)
6868
additionalInterfacesPolicy != null ? additionalInterfacesPolicy.AdditionalInterfaces : Type.EmptyTypes;
6969

7070
var enumerable = interceptionBehaviors as IInterceptionBehavior[] ?? interceptionBehaviors.ToArray();
71-
context.Policies.Set(
72-
new EffectiveInterceptionBehaviorsPolicy { Behaviors = enumerable },
73-
context.OriginalBuildKey);
71+
context.Policies.Set(context.OriginalBuildKey.Type,
72+
context.OriginalBuildKey.Name,
73+
typeof(EffectiveInterceptionBehaviorsPolicy),
74+
new EffectiveInterceptionBehaviorsPolicy { Behaviors = enumerable });
7475

7576
Type[] allAdditionalInterfaces =
7677
Intercept.GetAllAdditionalInterfaces(enumerable, additionalInterfaces);
@@ -91,14 +92,19 @@ public override void PreBuildUp(IBuilderContext context)
9192
/// <param name="context">Context of the build operation.</param>
9293
public override void PostBuildUp(IBuilderContext context)
9394
{
94-
IInterceptingProxy proxy = (context ?? throw new ArgumentNullException(nameof(context))).Existing as IInterceptingProxy;
95+
IInterceptingProxy proxy =
96+
(context ?? throw new ArgumentNullException(nameof(context))).Existing as IInterceptingProxy;
97+
9598
if (proxy == null)
9699
{
97100
return;
98101
}
99102

100-
EffectiveInterceptionBehaviorsPolicy effectiveInterceptionBehaviorsPolicy =
101-
context.Policies.GetNoDefault<EffectiveInterceptionBehaviorsPolicy>(context.OriginalBuildKey);
103+
var effectiveInterceptionBehaviorsPolicy =
104+
(EffectiveInterceptionBehaviorsPolicy)context.Policies
105+
.Get(context.OriginalBuildKey.Type,
106+
context.OriginalBuildKey.Name,
107+
typeof(EffectiveInterceptionBehaviorsPolicy), out _);
102108
if (effectiveInterceptionBehaviorsPolicy == null)
103109
{
104110
return;
@@ -113,8 +119,8 @@ public override void PostBuildUp(IBuilderContext context)
113119
private static TPolicy FindInterceptionPolicy<TPolicy>(IBuilderContext context)
114120
where TPolicy : class, IBuilderPolicy
115121
{
116-
return context.Policies.Get<TPolicy>(context.OriginalBuildKey) ??
117-
context.Policies.Get<TPolicy>(context.OriginalBuildKey.Type);
122+
return (TPolicy)context.Policies.GetOrDefault(typeof(TPolicy), context.OriginalBuildKey, out _) ??
123+
(TPolicy)context.Policies.GetOrDefault(typeof(TPolicy), context.OriginalBuildKey.Type, out _);
118124
}
119125

120126
private class EffectiveInterceptionBehaviorsPolicy : IBuilderPolicy
@@ -167,23 +173,26 @@ private static SelectedConstructor FindNewConstructor(SelectedConstructor origin
167173

168174
public static void SetPolicyForInterceptingType(IBuilderContext context, Type interceptingType)
169175
{
170-
var currentSelectorPolicy = context.Policies.Get<IConstructorSelectorPolicy>(context.OriginalBuildKey, out var selectorPolicyDestination);
171-
176+
var currentSelectorPolicy =
177+
(IConstructorSelectorPolicy)context.Policies.GetOrDefault(typeof(IConstructorSelectorPolicy),
178+
context.OriginalBuildKey,
179+
out var selectorPolicyDestination);
172180
if (!(currentSelectorPolicy is DerivedTypeConstructorSelectorPolicy currentDerivedTypeSelectorPolicy))
173181
{
174-
selectorPolicyDestination.Set<IConstructorSelectorPolicy>(
175-
new DerivedTypeConstructorSelectorPolicy(
176-
interceptingType,
177-
currentSelectorPolicy),
178-
context.OriginalBuildKey);
182+
selectorPolicyDestination.Set(context.OriginalBuildKey.Type,
183+
context.OriginalBuildKey.Name,
184+
typeof(IConstructorSelectorPolicy),
185+
new DerivedTypeConstructorSelectorPolicy(
186+
interceptingType, currentSelectorPolicy));
179187
}
180188
else if (currentDerivedTypeSelectorPolicy._interceptingType != interceptingType)
181189
{
182-
selectorPolicyDestination.Set<IConstructorSelectorPolicy>(
183-
new DerivedTypeConstructorSelectorPolicy(
184-
interceptingType,
185-
currentDerivedTypeSelectorPolicy._originalConstructorSelectorPolicy),
186-
context.OriginalBuildKey);
190+
selectorPolicyDestination.Set(context.OriginalBuildKey.Type,
191+
context.OriginalBuildKey.Name,
192+
typeof(IConstructorSelectorPolicy),
193+
new DerivedTypeConstructorSelectorPolicy(
194+
interceptingType,
195+
currentDerivedTypeSelectorPolicy._originalConstructorSelectorPolicy));
187196
}
188197
}
189198
}

0 commit comments

Comments
 (0)