I have a generic class Logger<TProvider> where TProvider : ILogProvider
which I'd like to configure dependency injection for with Autofac.
This class also has a constructor:
public Logger(LogType loggerType)
Which is currently used like this:
var logger = new Logger<Log4NetLogProvider>(LogType.CMS);
I was wondering if this could be dependency injected or will that not be possible due to type/constructor parameter required?
I'm aware of the RegisterGeneric
method, e.g:
builder.RegisterGeneric(typeof(Logger<>)).AsSelf()
I was wondering how I can tell autofac which TProvider
was passed in and also provide the constructor parameter LogType
? Or is this not a good candidate for DI?
You could try using the WithParameter
extension when registering the type
//using named parameter
builder.RegisterGeneric(typeof(Logger<>))
.AsSelf()
.WithParameter("loggerType", LogType.CMS);
//OR - using typed parameter
builder.RegisterGeneric(typeof(Logger<>))
.AsSelf()
.WithParameter(new TypedParameter(typeof(LogType), LogType.CMS));
Reference Passing Parameters to Register
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With