开发者

Setting the parameterless constructor as the injection constructor in container creation

I have a class with two ctors. One parameterless and one with parameters.

Unity will by default take the gready approach and go for the last ctor.

How can I define what ctor to use (I want to parameterless) without adding dependency on Unity within my classes? I think it is possible to do it in my container creation, but I don't know how.

Currently my registration entry looks like this:

container.RegisterType<IConfigurationService, SqlConfigurationService>()

UPDATE

I'm trying to avoid programming in XML (config file) as much as possible开发者_如何学运维.

EXTRA

How would registering a constructor with one parameter (which in it's turn should be injected)?

Say ILoggerService is already registered and I would want to use the constructor

public SqlConfigurationService(ILoggerService logger){}


I don't have Unity nearby right now, but as far as I recall, you can do something like this:

container.RegisterType<IConfigurationService, SqlConfigurationService>(
    new InjectionConstructor())


I think you can also pass in an InjectionConstructor (including ResolvedParameter<T>s for the parameters) in your registration. Have you tried that?


You can apply the InjectionConstructor attribute to the constructor you want to use. This does have the disadvantange of moving some container configuration away from a central location however.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜