Skip to content

Commit dd47a64

Browse files
committed
small thing adjusting the test
1 parent 7832c59 commit dd47a64

File tree

4 files changed

+56
-18
lines changed

4 files changed

+56
-18
lines changed

src/DryIoc/Container.cs

+30-6
Original file line numberDiff line numberDiff line change
@@ -8426,10 +8426,35 @@ public static class Resolver
84268426
typeof(IResolver).Method(nameof(IResolver.Resolve), typeof(Type), typeof(object),
84278427
typeof(IfUnresolved), typeof(Type), typeof(Request), typeof(object[]));
84288428

8429-
// todo: @wip add multiple overloads #498
8430-
// internal static readonly MethodInfo ResolveMethod =
8431-
// typeof(IResolver).Method(nameof(IResolver.Resolve), typeof(Type), typeof(object),
8432-
// typeof(IfUnresolved), typeof(Type), typeof(Request), typeof(object[]));
8429+
/// <summary>Code Generation specific overload</summary>
8430+
public static object CodeGenResolve(this IResolver resolver, Type serviceType, Request parent) =>
8431+
resolver.Resolve(serviceType, null, IfUnresolved.Throw, null, parent, null);
8432+
internal static readonly MethodInfo CodeGenResolveWithReqMethod =
8433+
typeof(Resolver).Method(nameof(Resolver.CodeGenResolve), typeof(IResolver), typeof(Type), typeof(Request));
8434+
8435+
/// <summary>Code Generation specific overload</summary>
8436+
public static object CodeGenResolve(this IResolver resolver, Type serviceType, Request parent, object[] args) =>
8437+
resolver.Resolve(serviceType, null, IfUnresolved.Throw, null, parent, args);
8438+
internal static readonly MethodInfo CodeGenResolveWithReqAndArgsMethod =
8439+
typeof(Resolver).Method(nameof(Resolver.CodeGenResolve), typeof(IResolver), typeof(Type), typeof(Request), typeof(object[]));
8440+
8441+
/// <summary>Code Generation specific overload</summary>
8442+
public static object CodeGenResolve(this IResolver resolver, Type serviceType, IfUnresolved ifUnresolved, Request parent) =>
8443+
resolver.Resolve(serviceType, null, ifUnresolved, null, parent, null);
8444+
internal static readonly MethodInfo CodeGenResolveWithIfUnresolvedAndReqMethod =
8445+
typeof(Resolver).Method(nameof(Resolver.CodeGenResolve), typeof(IResolver), typeof(Type), typeof(IfUnresolved), typeof(Request));
8446+
8447+
/// <summary>Code Generation specific overload</summary>
8448+
public static object CodeGenResolve(this IResolver resolver, Type serviceType, Type requiredServiceType, Request parent) =>
8449+
resolver.Resolve(serviceType, requiredServiceType, IfUnresolved.Throw, null, parent, null);
8450+
internal static readonly MethodInfo CodeGenResolveWithRequiredTypeAndReqMethod =
8451+
typeof(Resolver).Method(nameof(Resolver.CodeGenResolve), typeof(IResolver), typeof(Type), typeof(Type), typeof(Request));
8452+
8453+
/// <summary>Code Generation specific overload</summary>
8454+
public static object CodeGenResolve(this IResolver resolver, Type serviceType, object serviceKey, Request parent) =>
8455+
resolver.Resolve(serviceType, serviceKey, IfUnresolved.Throw, null, parent, null);
8456+
internal static readonly MethodInfo CodeGenResolveWithServiceKeyAndReqMethod =
8457+
typeof(Resolver).Method(nameof(Resolver.CodeGenResolve), typeof(IResolver), typeof(Type), typeof(object), typeof(Request));
84338458

84348459
internal static readonly MethodInfo ResolveManyMethod =
84358460
typeof(IResolver).GetMethod(nameof(IResolver.ResolveMany));
@@ -8443,8 +8468,7 @@ public static object Resolve(this IResolver resolver, Type serviceType, IfUnreso
84438468
resolver.Resolve(serviceType, ifUnresolved);
84448469

84458470
/// <summary>Resolves instance of type TService from container.</summary>
8446-
public static TService Resolve<TService>(this IResolver resolver,
8447-
IfUnresolved ifUnresolved = IfUnresolved.Throw) =>
8471+
public static TService Resolve<TService>(this IResolver resolver, IfUnresolved ifUnresolved = IfUnresolved.Throw) =>
84488472
(TService)resolver.Resolve(typeof(TService), ifUnresolved);
84498473

84508474
/// <summary>Tries to resolve instance of service type from container.</summary>

test/DryIoc.IssuesTests/Issue_HandleVariance.cs

+24-12
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,39 @@
44
namespace DryIoc.IssuesTests
55
{
66
[TestFixture]
7-
public class Issue_HandleVariance
7+
public class Issue_HandleVariance : ITest
88
{
9-
[Test, Explicit] // Ignore("fixme") todo: @bug? check why it is failing
10-
public void CommandHandlers_CanBeResolved_From_IoC()
9+
public int Run()
10+
{
11+
Test();
12+
return 1;
13+
}
14+
15+
[Test]
16+
public void Test()
1117
{
1218
var container = new Container();
1319

14-
container.Register(typeof(IBird<>), typeof(BirdBaseImpl<>));
15-
container.Register(typeof(IBird<Bird>), typeof(BirdImpl));
20+
container.Register(typeof(IContain<>), typeof(ContainBirdBase<>));
21+
container.Register(typeof(IContain<Bird>), typeof(ContainBird));
22+
23+
var birds = container.ResolveMany<IContain<Bird>>().ToList();
24+
Assert.AreEqual(1, birds.Count());
25+
26+
var birdBases = container.ResolveMany<IContain<BirdBase<string>>>();
27+
Assert.AreEqual(1, birdBases.Count());
1628

17-
var services = container.ResolveMany<IBird<Bird>>();
18-
Assert.AreEqual(2, services.Count());
29+
var birdsArray = container.Resolve<IContain<Bird>[]>();
30+
Assert.AreEqual(1, birdsArray.Length);
1931

20-
var servicesArray = container.Resolve<IBird<Bird>[]>();
21-
Assert.AreEqual(2, servicesArray.Length);
32+
var birdBasesArray = container.Resolve<IContain<BirdBase<string>>[]>();
33+
Assert.AreEqual(1, birdBasesArray.Length);
2234
}
2335

24-
public interface IBird<in T> { }
36+
public interface IContain<in T> { }
2537
public class BirdBase<T> { }
2638
public class Bird : BirdBase<string> { } // IBird<string>
27-
public class BirdImpl : IBird<Bird> { }
28-
public class BirdBaseImpl<T> : IBird<BirdBase<T>> { }
39+
public class ContainBird : IContain<Bird> { }
40+
public class ContainBirdBase<T> : IContain<BirdBase<T>> { }
2941
}
3042
}

test/DryIoc.TestRunner.net472/Program.cs

+1
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ public static void RunAllTests()
6969
var issueTests = new ITest[]
7070
{
7171
new Issue_Can_resolve_singleton_with_Func_of_scoped_dependency(),
72+
new Issue_HandleVariance(),
7273
new Issue_InjectingSerilogLogger(),
7374
new ParameterResolutionFixture(),
7475
new Issue_Register_null_string(),

test/DryIoc.TestRunner/Program.cs

+1
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ public static void RunAllTests()
6969
var issueTests = new ITest[]
7070
{
7171
new Issue_Can_resolve_singleton_with_Func_of_scoped_dependency(),
72+
new Issue_HandleVariance(),
7273
new Issue_InjectingSerilogLogger(),
7374
new ParameterResolutionFixture(),
7475
new Issue_Register_null_string(),

0 commit comments

Comments
 (0)