无法new
内部类无法直接创建
通过构建器创建
IServiceProvider serviceProvider = new ServiceCollection().BuildServiceProvider();
通过ServiceProvider获取自身
static void Main(string[] args) { IServiceProvider serviceProvider = new ServiceCollection().BuildServiceProvider(); Debug.Assert(object.ReferenceEquals(serviceProvider, serviceProvider.GetService<IServiceProvider>())); Debug.Assert(object.ReferenceEquals(serviceProvider, serviceProvider.GetServices<IServiceProvider>().Single())); }
通过ServiceScope创建
创建一个独立的ServiceProvider并调用其GetService<T>方法获得一个ServiceScopeFactory对象,然后调用其CreateScope方法创建一个新的ServiceScope。同时也就创建了一个ServiceProvider
static void Main(string[] args) { IServiceProvider serviceProvider1 = new ServiceCollection().BuildServiceProvider(); IServiceProvider serviceProvider2 = serviceProvider1.GetService<IServiceScopeFactory>().CreateScope().ServiceProvider; object root = serviceProvider2.GetType().GetField("_root", BindingFlags.Instance| BindingFlags.NonPublic).GetValue(serviceProvider2); Debug.Assert(object.ReferenceEquals(serviceProvider1, root)); }
本文来自博客园,作者:尾牙衣子,转载请注明原文链接:https://www.cnblogs.com/sunpan/p/14238781.html