kirov-opensource / NAutowired

ASP.NET CORE Field Injection Implement
MIT License
77 stars 16 forks source link

在帮助类中直接获取注入为NULL #14

Closed youfak closed 3 years ago

youfak commented 3 years ago

如: public class redisHelp{

    [Autowired]
    public UsersService usersService;

...........

}

FatTigerWang commented 3 years ago

redisHelp也需要通过[Autowired]特性注入,才能够解析redisHelp内部的依赖

youfak commented 3 years ago

redisHelp也需要通过[Autowired]特性注入,才能够解析redisHelp内部的依赖

我使用的是自动注入依懒,也尝试过 [Component] public class redisHelp{

[Autowired]
public UsersService usersService;

........... } 但获取到的依然是空。我是要使用services.AddScoped 进行手动注入这个类吗?

FatTigerWang commented 3 years ago

redisHelp对象是如何获取到的?展示一下如何在类中使用redisHelp对象的代码看一下

youfak commented 3 years ago

redisHelp对象是如何获取到的?展示一下如何在类中使用redisHelp对象的代码看一下

具体使用是通过Quartz定时任务反射调用

youfak commented 3 years ago

redisHelp对象是如何获取到的?展示一下如何在类中使用redisHelp对象的代码看一下

image 例如这样的使用

FatTigerWang commented 3 years ago

如果是自己反射出来,是无法起效果的,其原因是解析依赖对象需要一个入口点。 建议阅读Use In NET Core Console

FatTigerWang commented 3 years ago

这是一个简单的例子Sample

youfak commented 3 years ago

这是一个简单的例子Sample

不好意思,可能我表达不是很清楚,具体使用是在.net core 3.1 webapi中使用的Quartz定时任务进行反射执行方法

youfak commented 3 years ago

这是一个简单的例子Sample

我使用以下方式进行注入 image

我可以通过本身的反转进行获取到,但是通过[Autowired] 特性标记就无法获取了

FatTigerWang commented 3 years ago

跟通过你自己的AddScoped方式应当没关系。 猜测你通过构造函数还原redisHelp就能够正常还原redisHelp内部的依赖是不是? 那么问题出在,你还原出redisHelp的方式不正确。另外你如何通过Web API做Quartz的定时任务?是使用了HostedService还是? 最好能给我看redisHelp对象得到的方式,或者做一个做小的能够还原的此问题的样例项目,我可以下载下来。

FatTigerWang commented 3 years ago

如果没有更多回复,我将关闭此问题