Unity Feb 26 Weekly Drop

2月26日,Unity 又发布了新的版本,让我们来看看有什么改变!

新的特性

  • SetLifetime 方法允许指定用于特殊依赖的 LifetimeManager 对象。LifetimeManager 用于已存在的单件和实例的存在方式,并且易于编写自己的 LifetimeManager。例如,这为实现每个 ASP.NET 请求语义的需要提供了底层的支持。

当前,SetSingleton 和 RegisterInstance 依然是可用的,在它的内部使用了 LifetimeManager。

  • Teardown:BuildUp 的相反的方法。容器现在包含了一个 Teardown 方法,对象可以运行它来关闭、清除、以及进行所需要的操作。已有的容器行为是在 Teardown 的时候不进行任何操作,但扩展可以利用它。
  • 扩展可以实现 IDisposable:如果扩展对象实现了 IDisposable,在容器进行销毁时,它将被销毁。

用户可见的改变

  • 如果容器在解析依赖时无法构造它,容器将抛出一个异常,而不是返回 null。
  • 加入了 NotPresentBehavior。不会经常使用它,已有的实现在含有 LifetimeManager 的情况下不能工作。所有的依赖现在的行为都像 NotPresentBehavior.Build,它总是默认值。
  • 新的异常:任何失败都会导致 ResolutionFailedException,包括名称和类型的请求。内部异常包含了实质的异常,它提供了关于在失败时构造什么和失败发生在什么地方的完整细节。

内部改变

  • 解析参数的 IL 生成步骤已经被重写。代替用特性生成 IL,解析参数的值将发出对 IDependencyResolverPolicy 的调用。不同的选择器策略在选择目标时可以响应解析到策略列表中。这提供了不需要使用特性配置类型上的依赖所需要的基础设施。 ResolveAttribute 和相关的类已被删除。
  • 临时策略:Object Buidler 的老版本只有临时策略。任何添加到策略列表中的策略在构造过程结束后都将被删除。做为性能的改进,初始发布将这修改为永久策略。但临时策略依然是很有用 的,所以现在 IBuilderContext 有二个策略列表对象 Policies 和 PersistentPolicies。如果在构建结束后将策略票证添加到 PersistentPolicies,或者添加到 Policies 创建一个临时策略。通常,在查找一个策略时,将继续使用 Policies,后来的查找将同时搜索临时的和永久的策略。
  • 当然还有调整和修正。

目前,文档还没有更新到当前的状态,所以与现在的发布不同步。

希望对您有所帮助!

邓明,理想&美人

posted @ 2008-02-29 00:46  Dorian Deng  阅读(2633)  评论(1编辑  收藏  举报