Class LazySvc<TService>
Helps us create lazy Service objects. It has some special features:
- It will automatically lazy-attach a logger when used correctly
- It can also be configured with a lazy init function to keep code clean.
This reduces the amount of plumbing in many code files.
It will detect if the provided object/service supports these features.
So if it's used for anything that doesn't support logging it will just behave like Lazy
.
[InternalApi_DoNotUse_MayChangeWithoutNotice]
public class LazySvc<TService> : IHasLog where TService : class
Type Parameters
TService
Service type, ideally based on ServiceBase
- Inheritance
-
LazySvc<TService>
- Implements
Constructors
LazySvc(IServiceProvider)
Constructor, should never be called as it's only meant to be used with Dependency Injection.
public LazySvc(IServiceProvider sp)
Parameters
Properties
IsValueCreated
public bool IsValueCreated { get; }
Property Value
Log
The parent log, which is attached to newly generated objects if they support logging.
public ILog Log { get; }
Property Value
Value
public TService Value { get; }
Property Value
- TService
Methods
Inject(TService)
EXPERIMENTAL - replace a service with an already prepared one, to bypass the default factory in edge cases
public void Inject(TService replacement)
Parameters
replacement
TService
SetInit(Action<TService>)
Set the init-command as needed
public LazySvc<TService> SetInit(Action<TService> newInitCall)
Parameters
newInitCall
Action<TService>
Returns
- LazySvc<TService>