您的位置:首页 > Web前端

06-001 DependencyInjection 之 LifecycleKind

2015-03-20 16:57 197 查看
IApplicationBuilder 里有如下一成员:

IServiceProvider ApplicationServices { get; set; }


HttpContext 里有如下两个成员:

public abstract IServiceProvider ApplicationServices { get; set; }
public abstract IServiceProvider RequestServices     { get; set; }


IServiceProvider 的成员:

public object GetService(Type serviceType)


创建 添加 调用的简单代码如下:

var serviceProvider = new ServiceCollection()
.AddTransient<IFakeService, FakeService>()
.AddTransient<CreationCountFakeService>()
.BuildServiceProvider();

var IFakeService = serviceProvider.GetService(typeof(IFakeService))() as IFakeService;


简单描述为:创建一个集合 ServiceCollection;向集合里添加 键值对:接口 和 接口的实现。

集合会生成 ServiceProvider. 通过 ServiceProvider 来得到需要的对象。

代码中的 .AddTransient 作何理解吗? 现在看一下 LifecycleKind

public enum LifecycleKind
{
Singleton, //单例;单态;  只有一个示例  每次调用都返回同一个对象
Scoped,    // 一定范围的 在一定范围内只有一个实例 如在一个请求范围内是同一个实例 不同的请求创建新对象
Transient  //短暂的;转瞬即逝的;临时的 每次调用都创建一个新的对象
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: