-
Notifications
You must be signed in to change notification settings - Fork 16
通过构造函数注入的情况,注入进来的类型内部使用Autowrid标记的属性或字段不生效 #10
Comments
请问Test类使用[Service] Attribute |
Test类是通过其他方式注册到容器的,services.AddSingleton< Test >(); |
[ApiController]
public class AccountController{
//此处需要使用Autowired注入
[Autowired]
private readonly ServiceA _serviceA;
public AccountController(ServiceA serviceA){
_serviceA = serviceA;
}
public void TestAction(){
_serviceA.TestMethod();
} 这是由于我们只查找了具有 |
主要考虑历史代码有大量的构造函数注入的情况,所有做到兼容还是有必要的 |
@FatTigerWang 刚看了下代码,Service是通过Castle方式批量注入的
这种方式在Service层好像就无法用 [Autowired]了 |
这是个动态代理,它实际上创建的是代理对象。代理对象加入到容器中,是无法还原出本来的对象的。 |
Hello 这个问题有被解决嘛
构造ServiceB后,ServiceA中的Logger并没有应用属性注入 |
因为在实例化类调用构造函数时, |
或许可以考虑反射获取构造函数及参数,再逐个检查注入对象型参数的属性。但使用构造函数注入依赖时,其形参通常是接口类型或基类类型,这时处理起来也非常棘手。因为单纯通过反射根本无法获取实参,况且也无法得知构造参数与字段的对应关系。 如果引入动态代理,将构造函数代理并逐个检查注入实参,这样理论上确实可行。:smile: |
The text was updated successfully, but these errors were encountered: