diff --git a/DigitalData.Core.Abstractions/LazyServiceProvider.cs b/DigitalData.Core.Abstractions/LazyServiceProvider.cs
new file mode 100644
index 0000000..99a6fdd
--- /dev/null
+++ b/DigitalData.Core.Abstractions/LazyServiceProvider.cs
@@ -0,0 +1,40 @@
+namespace DigitalData.Core.Abstractions;
+
+///
+/// A deferred implementation of that allows the instance
+/// to be provided at a later time via a factory callback.
+///
+///
+/// This is particularly useful when service registration requires an instance,
+/// but the service provider is not yet available at registration time.
+/// By using , a service can safely resolve dependencies once
+/// the application's service provider has been built, ensuring a single consistent scope.
+///
+public class DeferredServiceProvider : IServiceProvider
+{
+ private Lazy? _serviceProvider;
+
+ ///
+ /// Sets the factory that will be used to lazily initialize the instance.
+ ///
+ public Func Factory
+ {
+ set => _serviceProvider = new(value);
+ }
+
+ ///
+ /// Retrieves the requested service object from the deferred .
+ ///
+ /// The type of service object to retrieve.
+ /// The requested service object, or null if the service is not available.
+ ///
+ /// Thrown if the service provider factory has not been set before calling .
+ ///
+ public object? GetService(Type serviceType)
+ {
+ if (_serviceProvider is null)
+ throw new InvalidOperationException("The service provider has not been initialized. Make sure 'Factory' is set before calling 'GetService'.");
+
+ return _serviceProvider.Value.GetService(serviceType);
+ }
+}