一点背景:
在我当前的项目中,我尝试使用.Net Core 2.0 DI系统进行依赖项注入。我正在使用Scrutor进行程序集扫描,并将所有实现给定接口的类添加到IServiceCollection以构建IServiceProvider。类似于github中的示例。
public static IServiceCollection AddSingletonsFromAssembly(this
IServiceCollection collection, Type type, Assembly assembly)
{
collection.Scan(x =>
{
x.FromAssemblies(assembly)
.AddClasses(classes => classes.AssignableTo(type))
.AsImplementedInterfaces()
.WithSingletonLifetime();
});
return collection;
}
我现在遇到的问题是,其他任何服务都不需要我的某些服务,因此IServiceProvider永远不会初始化它,因为IServiceProvider会延迟初始化单例。
有没有一种方法可以将IServiceProvider设置为热切初始化或迭代IServiceProvider中的服务以对其进行初始化?
我用一个空的泛型接口填充了集合,因此这里没有使用GetServices的选项,因为您不能有一个空的泛型列表。
如果其他依赖项很小,我愿意接受。
注意:这是.Net Core控制台应用程序...不是ASP.NET Core
忘了提。我知道我可以快速IServiceProvider.GetService<T>()完成这些实例的初始化工作,但是我宁愿只写一次,而忘记这样做的方法。类似装配扫描。
RISEBY
相关分类