Skip to content

Commit e524608

Browse files
committed
Fixes unitycontainer/unity#306
1 parent dee62c7 commit e524608

2 files changed

Lines changed: 25 additions & 2 deletions

File tree

src/Extensions/Diagnostic.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.Diagnostics;
4+
using System.Reflection;
35
using Unity.Extension;
6+
using Unity.Factories;
7+
using Unity.Policy;
48

59
namespace Unity
610
{
@@ -44,6 +48,12 @@ protected override void Initialize()
4448
{
4549
((UnityContainer)Container).SetDefaultPolicies = UnityContainer.SetDiagnosticPolicies;
4650
((UnityContainer)Container).SetDefaultPolicies((UnityContainer)Container);
51+
52+
EnumerableResolver.EnumerableMethod = typeof(EnumerableResolver).GetTypeInfo()
53+
.GetDeclaredMethod(nameof(EnumerableResolver.DiagnosticResolver));
54+
55+
EnumerableResolver.EnumerableFactory = typeof(EnumerableResolver).GetTypeInfo()
56+
.GetDeclaredMethod(nameof(EnumerableResolver.DiagnosticResolverFactory));
4757
}
4858
}
4959

src/Factories/EnumerableResolver.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ public class EnumerableResolver
1111
{
1212
#region Fields
1313

14-
private static readonly MethodInfo EnumerableMethod =
14+
internal static MethodInfo EnumerableMethod =
1515
typeof(EnumerableResolver).GetTypeInfo()
1616
.GetDeclaredMethod(nameof(EnumerableResolver.Resolver));
1717

18-
private static readonly MethodInfo EnumerableFactory =
18+
internal static MethodInfo EnumerableFactory =
1919
typeof(EnumerableResolver).GetTypeInfo()
2020
.GetDeclaredMethod(nameof(EnumerableResolver.ResolverFactory));
2121

@@ -64,6 +64,19 @@ private static ResolveDelegate<BuilderContext> ResolverFactory<TElement>()
6464
return (ref BuilderContext c) => ((UnityContainer)c.Container).ResolveEnumerable<TElement>(c.Resolve, type, c.Name);
6565
}
6666

67+
68+
internal static object DiagnosticResolver<TElement>(ref BuilderContext context)
69+
{
70+
return ((UnityContainer)context.Container).ResolveEnumerable<TElement>(context.Resolve,
71+
context.Name).ToArray();
72+
}
73+
74+
internal static ResolveDelegate<BuilderContext> DiagnosticResolverFactory<TElement>()
75+
{
76+
Type type = typeof(TElement).GetGenericTypeDefinition();
77+
return (ref BuilderContext c) => ((UnityContainer)c.Container).ResolveEnumerable<TElement>(c.Resolve, type, c.Name).ToArray();
78+
}
79+
6780
#endregion
6881

6982

0 commit comments

Comments
 (0)