class AClass1 :IA { IC _c public AClass1([Dependency("test")]IC c) { _c = c; } public test() { console.writer("test"); } } IUnityContainer _currentContainer = new UnityContainer(); _currentContainer.RegisterType<IC,Class1>("test"); _currentContainer.RegisterType<IC,Class2>("test2"); _currentContainer.RegisterType<IA, AClass1>("file"); _currentContainer.RegisterType<IA, BClass2>("ftp"); _currentContainer.Resolve<IA>("ftp").test();
这样注入是没有问题的,但是[Dependency("test")] 规定死了只有test,我想动态实现test和test2的注入,不知道有没有好的办法?
感觉你的思路有点反了,一般的做法是
public AClass1([Dependency("test")]IC c)
这里直接对接口进行编程,即:
public AClass1(IC c)
只是在调用时动态进行注入
因为我_currentContainer.Resolve<IA>("ftp").test();IA这里也要注入,选择哪种传输方式,注入传输发送,还要动态注入类型。所有就出现了这样的实现方式