Skip to content

Commit c3e21a7

Browse files
committed
Make GetService and GetServices methods on AutofacDependencyResolver virtual.
1 parent 041d0f9 commit c3e21a7

File tree

3 files changed

+21
-9
lines changed

3 files changed

+21
-9
lines changed

appveyor.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
version: 3.3.3.{build}
1+
version: 3.3.4.{build}
22

33
assembly_info:
44
patch: true
55
file: AssemblyInfo.cs
66
assembly_version: "3.3.0.0"
77
assembly_file_version: "{version}"
8-
assembly_informational_version: "3.3.3-CI-{build}"
8+
assembly_informational_version: "3.3.4-CI-{build}"
99

1010
configuration: Release
1111

src/Autofac.Integration.Mvc/AutofacDependencyResolver.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ public ILifetimeScope ApplicationContainer
149149
/// <param name="serviceType">Type of the service.</param>
150150
/// <returns>The single instance if resolved; otherwise, <c>null</c>.</returns>
151151
[SecurityCritical]
152-
public object GetService(Type serviceType)
152+
public virtual object GetService(Type serviceType)
153153
{
154154
return RequestLifetimeScope.ResolveOptional(serviceType);
155155
}
@@ -160,7 +160,7 @@ public object GetService(Type serviceType)
160160
/// <param name="serviceType">Type of the service.</param>
161161
/// <returns>The list of instances if any were resolved; otherwise, an empty list.</returns>
162162
[SecurityCritical]
163-
public IEnumerable<object> GetServices(Type serviceType)
163+
public virtual IEnumerable<object> GetServices(Type serviceType)
164164
{
165165
var enumerableServiceType = typeof(IEnumerable<>).MakeGenericType(serviceType);
166166
var instance = RequestLifetimeScope.Resolve(enumerableServiceType);

tests/Autofac.Tests.Integration.Mvc/AutofacDependencyResolverFixture.cs

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
// OTHER DEALINGS IN THE SOFTWARE.
2525

2626
using System;
27+
using System.Collections.Generic;
2728
using System.Linq;
2829
using System.Web.Mvc;
2930
using Autofac.Integration.Mvc;
@@ -147,9 +148,11 @@ public void ConfigurationActionInvokedForNestedLifetime()
147148
public void DerivedResolverTypesCanStillBeCurrentResolver()
148149
{
149150
var container = new ContainerBuilder().Build();
150-
var provider = new DerivedAutofacDependencyResolver(container);
151-
DependencyResolver.SetResolver(provider);
152-
Assert.AreEqual(provider, AutofacDependencyResolver.Current, "You should be able to derive from AutofacDependencyResolver and still use the Current property.");
151+
var resolver = new DerivedAutofacDependencyResolver(container);
152+
DependencyResolver.SetResolver(resolver);
153+
Assert.AreEqual(resolver, AutofacDependencyResolver.Current, "You should be able to derive from AutofacDependencyResolver and still use the Current property.");
154+
Assert.That(resolver.GetService(typeof(object)), Is.Not.Null);
155+
Assert.That(resolver.GetServices(typeof(object)), Has.Length.EqualTo(1));
153156
}
154157

155158
[Test]
@@ -206,9 +209,18 @@ public void GetServicesReturnsRegisteredService()
206209

207210
private class DerivedAutofacDependencyResolver : AutofacDependencyResolver
208211
{
209-
public DerivedAutofacDependencyResolver(IContainer container)
210-
: base(container, new StubLifetimeScopeProvider(container))
212+
public DerivedAutofacDependencyResolver(IContainer container) : base(container)
213+
{
214+
}
215+
216+
public override object GetService(Type serviceType)
217+
{
218+
return serviceType == typeof(object) ? new object() : base.GetService(serviceType);
219+
}
220+
221+
public override IEnumerable<object> GetServices(Type serviceType)
211222
{
223+
return serviceType == typeof(object) ? new[] {new object()} : base.GetServices(serviceType);
212224
}
213225
}
214226
}

0 commit comments

Comments
 (0)