Skip to content

Commit

Permalink
Added a unit test to confirm that additional types registered in a ch…
Browse files Browse the repository at this point in the history
…ild lifetime scope are considered by the reflection activator when selecting a constructor.
  • Loading branch information
alexmg committed Jul 7, 2016
1 parent 9e7199c commit b27811e
Showing 1 changed file with 41 additions and 0 deletions.
@@ -1,4 +1,5 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Reflection;
using Autofac.Builder;
Expand Down Expand Up @@ -310,6 +311,46 @@ public void CanReplaceConstructorFinderForRegistrationInChildLifetimeScope()
Assert.Equal(1, instance.CalledConstructorParameterCount);
}

public class TwoConstructorsParam1
{
}

public class TwoConstructorsParam2
{
}

[SuppressMessage("ReSharper", "UnusedParameter.Local")]
public class TwoConstructors
{
public int ParameterCount { get; }

public TwoConstructors(TwoConstructorsParam1 param1)
{
ParameterCount = 1;
}

public TwoConstructors(TwoConstructorsParam1 param1, TwoConstructorsParam2 param2)
{
ParameterCount = 2;
}
}

[Fact]
public void AdditionalTypeRegisteredInChildLifetimeScopeConsideredWhenSelectingConstructor()
{
var builder = new ContainerBuilder();
builder.RegisterType<TwoConstructors>();
builder.RegisterType<TwoConstructorsParam1>();
var container = builder.Build();
var instance = container.Resolve<TwoConstructors>();
Assert.Equal(1, instance.ParameterCount);
var lifetimeScope = container.BeginLifetimeScope(b => b.RegisterType<TwoConstructorsParam2>());

instance = lifetimeScope.Resolve<TwoConstructors>();

Assert.Equal(2, instance.ParameterCount);
}

public class NoPublicConstructor
{
internal NoPublicConstructor()
Expand Down

0 comments on commit b27811e

Please sign in to comment.