Skip to content

Commit

Permalink
Merge pull request autofac#1196 from alistairjevans/develop
Browse files Browse the repository at this point in the history
Ensure that middleware added to a scanning registration is copied to all found types.
  • Loading branch information
tillig authored Aug 29, 2020
2 parents f6954c3 + e0f721b commit fd27195
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,9 @@ private static void ScanTypes(IEnumerable<Type> types, IComponentRegistryBuilder
.WithParameters(rb.ActivatorData.ConfiguredParameters)
.WithProperties(rb.ActivatorData.ConfiguredProperties);

// Copy middleware from the scanning registration.
scanned.ResolvePipeline.UseRange(rb.ResolvePipeline.Middleware);

scanned.RegistrationData.CopyFrom(rb.RegistrationData, false);

foreach (var action in rb.ActivatorData.ConfigurationActions)
Expand Down
48 changes: 48 additions & 0 deletions test/Autofac.Test/Features/Scanning/ScanningRegistrationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -491,5 +491,53 @@ public void PublicNestedClassesAreScanned()
var c = RegisterScenarioAssembly();
c.AssertRegistered<NestedComponent.PublicComponent>();
}

[Fact]
public void ScannedAssembliesPreparingEventFires()
{
var preparingCalled = false;

var cb = new ContainerBuilder();
cb.RegisterAssemblyTypes(typeof(AComponent).GetTypeInfo().Assembly)
.OnPreparing(args => preparingCalled = true);

var c = cb.Build();

var a = c.Resolve<AComponent>();

Assert.True(preparingCalled);
}

[Fact]
public void ScannedAssembliesActivatedEventFires()
{
var activatedCalled = false;

var cb = new ContainerBuilder();
cb.RegisterAssemblyTypes(typeof(AComponent).GetTypeInfo().Assembly)
.OnActivated(args => activatedCalled = true);

var c = cb.Build();

var a = c.Resolve<AComponent>();

Assert.True(activatedCalled);
}

[Fact]
public void ScannedAssembliesActivatingEventFires()
{
var activatingCalled = false;

var cb = new ContainerBuilder();
cb.RegisterAssemblyTypes(typeof(AComponent).GetTypeInfo().Assembly)
.OnActivating(args => activatingCalled = true);

var c = cb.Build();

var a = c.Resolve<AComponent>();

Assert.True(activatingCalled);
}
}
}

0 comments on commit fd27195

Please sign in to comment.