Skip to content

Commit a01eb9b

Browse files
committed
Optimizations
1 parent 82891e4 commit a01eb9b

File tree

1 file changed

+10
-25
lines changed

1 file changed

+10
-25
lines changed

src/Utility/PolicyListExtensions.cs

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,11 @@ public static void SetDefault<TPolicyInterface>(this IPolicyList policies, TPoli
131131

132132
#region Get
133133

134+
public static T Get<T>(this IPolicyList policies, Type type, string name, out IPolicyList list)
135+
{
136+
return (T) policies.Get(type, name, typeof(T), out list);
137+
}
138+
134139
/// <summary>
135140
/// Gets an individual policy.
136141
/// </summary>
@@ -342,31 +347,11 @@ private static Tuple<Type, string> ParseBuildKey(object buildKey)
342347

343348
public static TPolicyInterface GetPolicy<TPolicyInterface>(this IPolicyList list, INamedType buildKey, out IPolicyList containingPolicyList)
344349
{
345-
return (TPolicyInterface)(list.GetPolicyForKey(typeof(TPolicyInterface), buildKey, out containingPolicyList) ??
346-
list.GetPolicyForOpenType(typeof(TPolicyInterface), buildKey, buildKey.Type, out containingPolicyList) ??
347-
list.GetDefaultForPolicy(typeof(TPolicyInterface), out containingPolicyList));
348-
}
349-
350-
private static IBuilderPolicy GetPolicyForOpenType(this IPolicyList list, Type policyInterface, INamedType buildKey, Type buildType, out IPolicyList containingPolicyList)
351-
{
352-
containingPolicyList = null;
353-
if (null == buildType) return null;
354-
355-
if (buildType.GetTypeInfo().IsGenericType)
356-
{
357-
var newType = buildType.GetGenericTypeDefinition();
358-
return list.Get(newType, buildKey.Name, policyInterface, out containingPolicyList) ??
359-
list.Get(newType, string.Empty, policyInterface, out containingPolicyList);
360-
}
361-
362-
if (buildType.IsArray && buildType.GetArrayRank() == 1)
363-
{
364-
return list.Get(typeof(Array), buildKey.Name, policyInterface, out containingPolicyList) ??
365-
list.Get(typeof(Array), string.Empty, policyInterface, out containingPolicyList);
366-
}
367-
368-
return null;
350+
return (TPolicyInterface)(list.GetPolicyForKey(typeof(TPolicyInterface), buildKey, out containingPolicyList)
351+
?? (buildKey.Type.GetTypeInfo().IsGenericType
352+
? list.Get(buildKey.Type.GetGenericTypeDefinition(), buildKey.Name, typeof(TPolicyInterface), out containingPolicyList) ??
353+
list.Get(null, null, typeof(TPolicyInterface), out containingPolicyList)
354+
: list.Get(null, null, typeof(TPolicyInterface), out containingPolicyList)));
369355
}
370-
371356
}
372357
}

0 commit comments

Comments
 (0)