diff --git a/Moq.AutoMock.Tests/DescribeGetMock.cs b/Moq.AutoMock.Tests/DescribeGetMock.cs
index 2f29f970..177aa831 100644
--- a/Moq.AutoMock.Tests/DescribeGetMock.cs
+++ b/Moq.AutoMock.Tests/DescribeGetMock.cs
@@ -65,5 +65,22 @@ public void It_allows_getting_mocked_object_when_overriden()
Assert.IsNotNull(@protected);
Assert.IsInstanceOfType(@protected, typeof(ProtectedConstructor1));
}
+
+ [TestMethod]
+ public void It_gets_mocked_object_via_iserviceprovider()
+ {
+ IServiceProvider mocker = new AutoMocker();
+ var service = mocker.GetService(typeof(Empty));
+ Assert.IsNotNull(service);
+ Assert.IsInstanceOfType(service, typeof(Empty));
+ }
+
+ [TestMethod]
+ public void It_returns_null_for_unmockable_object_via_iserviceprovider()
+ {
+ IServiceProvider mocker = new AutoMocker();
+ var service = mocker.GetService(typeof(string));
+ Assert.IsNull(service);
+ }
}
}
\ No newline at end of file
diff --git a/Moq.AutoMock/AutoMocker.cs b/Moq.AutoMock/AutoMocker.cs
index 3923e257..65850f42 100644
--- a/Moq.AutoMock/AutoMocker.cs
+++ b/Moq.AutoMock/AutoMocker.cs
@@ -18,7 +18,7 @@ namespace Moq.AutoMock
///
/// An auto-mocking IoC container that generates mock objects using Moq.
///
- public partial class AutoMocker
+ public partial class AutoMocker : IServiceProvider
{
///
/// Initializes an instance of AutoMockers.
@@ -441,6 +441,14 @@ internal bool TryGet(
return false;
}
+ ///
+ object? IServiceProvider.GetService(Type serviceType)
+ {
+ return TryGet(serviceType, new ObjectGraphContext(false), out IInstance? service)
+ ? service.Value
+ : null;
+ }
+
#endregion Get
#region GetMock