Skip to content

Commit eb20702

Browse files
authored
Merge pull request #120 from autofac/external-dependency-switch
Switch to ExternallyOwned for instance dependencies
2 parents dc03f10 + ecec468 commit eb20702

3 files changed

Lines changed: 15 additions & 3 deletions

File tree

appveyor.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
image: Ubuntu
22

3-
version: 9.0.0.{build}
3+
version: 10.0.0.{build}
44

55
dotnet_csproj:
6-
version_prefix: '9.0.0'
6+
version_prefix: '10.0.0'
77
patch: true
88
file: 'src\**\*.csproj'
99

src/Autofac.Extensions.DependencyInjection/AutofacRegistration.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,8 @@ private static void Register(
329329
builder
330330
.RegisterInstance(descriptor.NormalizedImplementationInstance()!)
331331
.ConfigureServiceType(descriptor)
332-
.ConfigureLifecycle(descriptor.Lifetime, null);
332+
.ConfigureLifecycle(descriptor.Lifetime, null)
333+
.ExternallyOwned();
333334
}
334335
}
335336
}

test/Autofac.Extensions.DependencyInjection.Test/Specification/AssumedBehaviorTests.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,17 @@ public void ServiceScopesAreFlat()
171171
innerScope.Dispose();
172172
}
173173

174+
[Fact]
175+
public void ServiceInstancesRegisteredAreNotDisposedWhenTheProviderIsDisposed()
176+
{
177+
var externalService = new DisposeTracker();
178+
var services = new ServiceCollection().AddSingleton(externalService);
179+
var rootProvider = CreateServiceProvider(services);
180+
((IDisposable)rootProvider).Dispose();
181+
182+
Assert.False(externalService.Disposed);
183+
}
184+
174185
protected abstract IServiceProvider CreateServiceProvider(IServiceCollection serviceCollection);
175186

176187
[SuppressMessage("CA1812", "CA1812", Justification = "Instantiated through reflection.")]

0 commit comments

Comments
 (0)