Class AutofacDependencyResolver
Autofac implementation for IDependency
public class AutofacDependencyResolver : IDependencyResolver, IReadonlyDependencyResolver, IMutableDependencyResolver, IDisposable
- Inheritance
-
Autofac
Dependency Resolver
- Implements
- Extension Methods
Constructors
AutofacDependencyResolver(ContainerBuilder)
Initializes a new instance of the Autofac
Parameters
builder
ContainerBuilder Autofac container builder.
Methods
Dispose()
Dispose(bool)
Disposes of the instance.
Parameters
disposing
boolWhether or not the instance is disposing.
GetService(Type?, string?)
Gets an instance of the given serviceType
. Must return null
if the service is not available (must not throw).
Parameters
serviceType
TypeThe object type.
contract
stringA optional value which will retrieve only a object registered with the same contract.
Returns
- object
The requested object, if found;
null
otherwise.
GetServices(Type?, string?)
Gets all instances of the given serviceType
. Must return an empty
collection if the service is not available (must not return null
or throw).
Parameters
serviceType
TypeThe object type.
contract
stringA optional value which will retrieve only objects registered with the same contract.
Returns
- IEnumerable<object>
A sequence of instances of the requested
serviceType
. The sequence should be empty (notnull
) if no objects of the given type are available.
HasRegistration(Type?, string?)
Check to see if a resolvers has a registration for a type.
Parameters
serviceType
TypeThe type to check for registration.
contract
stringA optional contract value which will indicates to only generate the value if this contract is specified.
Returns
- bool
Whether there is a registration for the type.
Register(Func<object?>, Type?, string?)
Important: Because Autofac 5+ containers are immutable, this method should not be used by the end-user. It is still needed to satisfy ReactiveUI initialization procedure. Register a function with the resolver which will generate a object for the specified service type. Optionally a contract can be registered which will indicate that registration will only work with that contract. Most implementations will use a stack based approach to allow for multiple items to be registered.
[Obsolete("Because Autofac 5+ containers are immutable, this method should not be used by the end-user.")]
public virtual void Register(Func<object?> factory, Type? serviceType, string? contract = null)
Parameters
factory
Func<object>The factory function which generates our object.
serviceType
TypeThe type which is used for the registration.
contract
stringA optional contract value which will indicates to only generate the value if this contract is specified.
ServiceRegistrationCallback(Type, string?, Action<IDisposable>)
Register a callback to be called when a new service matching the type and contract is registered.
When registered, the callback is also called for each currently matching service.
public virtual IDisposable ServiceRegistrationCallback(Type serviceType, string? contract, Action<IDisposable> callback)
Parameters
serviceType
TypeThe type which is used for the registration.
contract
stringA optional contract value which will indicates to only generate the value if this contract is specified.
callback
Action<IDisposable>The callback which will be called when the specified service type and contract are registered.
Returns
- IDisposable
When disposed removes the callback.
SetLifetimeScope(ILifetimeScope)
Sets the lifetime scope which will be used to resolve ReactiveUI services. It should be set after Autofac application-wide container is built.
Parameters
lifetimeScope
ILifetimeScope Lifetime scope, which will be used to resolve ReactiveUI services.
UnregisterAll(Type?, string?)
Because Autofac 5+ containers are immutable, UnregisterAll method is not available anymore. Instead, simply register your service after InitializeReactiveUI to override it.
[Obsolete("Because Autofac 5+ containers are immutable, UnregisterAll method is not available anymore. Instead, simply register your service after InitializeReactiveUI to override it https://autofaccn.readthedocs.io/en/latest/register/registration.html#default-registrations.")]
public virtual void UnregisterAll(Type? serviceType, string? contract = null)
Parameters
serviceType
TypeThe service type to unregister.
contract
stringThe optional contract value, which will only remove the value associated with the contract.
Exceptions
- Not
Implemented Exception This is not implemented by default.
UnregisterCurrent(Type?, string?)
Because Autofac 5+ containers are immutable, UnregisterCurrent method is not available anymore. Instead, simply register your service after InitializeReactiveUI to override it.
[Obsolete("Because Autofac 5+ containers are immutable, UnregisterCurrent method is not available anymore. Instead, simply register your service after InitializeReactiveUI to override it https://autofaccn.readthedocs.io/en/latest/register/registration.html#default-registrations.")]
public virtual void UnregisterCurrent(Type? serviceType, string? contract = null)
Parameters
serviceType
TypeThe service type to unregister.
contract
stringThe optional contract value, which will only remove the value associated with the contract.
Exceptions
- Not
Implemented Exception This is not implemented by default.