Unity constructor injection with other parameter

前端 未结 3 513
悲&欢浪女
悲&欢浪女 2021-01-04 12:37

I have a class with a constructor that looks like the following:

public BatchService(IRepository repository, ILogger logger, string user)

I

相关标签:
3条回答
  • 2021-01-04 13:01

    You can use ParameterOverride:

    BatchService batchService = 
    DIContainer.Resolve<BatchService>(new ParameterOverride("user", valueForUser));
    
    0 讨论(0)
  • 2021-01-04 13:12

    Please don't abuse Unity as a ServiceLocator.

    If you want to create objects that need runtime parameters use a factory. You can even drop the act of implementing that factory by either using the Unity version of Typed Factories or let Unity generate factory delegates for you.

    0 讨论(0)
  • 2021-01-04 13:12

    First of all it's not good idea mix ILogger with business logic. You can create ILogger directly in BatchService or resolve thru [Dependency] attribute. DI it's not panacea, business object creation shouldn't depend from ILogger

    Use new InjectionParameter<string>("user") Take a look please Registering Injected Parameter and Property Values for more details

    0 讨论(0)
提交回复
热议问题