Skip to content

Conversation

@ymh199478
Copy link
Contributor

新增内容

  • App类可以被继承。
  • 容器可以为实现 IDisposable 接口的对象,在 Release 时会自动触发接口。
  • 容器增加可变类型接口(IVariant),允许将一个基础类型转为复杂类型。
  • 容器增加Params数据结构,允许容器进行参数名参数匹配。
  • 容器增加 BindMethod 方法允许向容器注册一个方法。
  • 容器增加 OnReboundWatch 函数,该函数用于监听当已经解决的服务发生重定义时触发的事件,这个事件对实例绑定的服务也会有效。
  • Str辅助函数库增加了Method方法可以获取字符串中符合规则的函数名。
  • Arr增加了Flash函数,该函数可以处理只在片段时间内产生作用的内容。
  • 增加了字典辅助函数库(Dict)
    -- Filter函数可以过滤返回值为false的键值对
    -- Remove函数可以移除比较回掉返回为true的元素
    -- Modify函数可以直接修改键值对的值
    -- AddRange允许批量添加到字典
    -- Map函数将回调的返回值作为新的字典
    -- Keys函数可以获取字典的键名数组
    -- Values函数可以获取字典的值数组
    -- Get函数可以通过点状表达式访问深度字典
    -- Set函数可以通过点状表达式写入深度字典
    -- Remove函数可以通过点状表达式删除深度字典元素
  • Arr 增加了 RemoveAt 函数,可以通过数组下标移除元素,并且返回被移除的元素值。
  • Container.Call 支持直接为lambda表达式提供依赖注入。

更新内容

  • 容器获得了更好的绑定(Bind)校验并及时的抛出异常。
  • Facade(门面)机制优化, 拥有了更好的访问性能。
  • 容器中string被认为是不可以被实例的对象。
  • 全局事件系统关联服务容器,这意味着所有的函数绑定事件不会再限制参数了,容器会选择最合适的参数自动注入。
  • 全局事件移除生命周期支持,因为全局事件的监听不应该频繁发生变化,生命周期功能会诱导开发者进行不正确的操作
  • 优化了注入算法,能够尽可能的推导出注入实例。
  • OnResolvingOnRelease 所加入的新的修饰器不会再处理已经生成的实例。实例的变化应该使用Watch来监控
  • 容器注入的策略被调整为必然注入成功(不为null)(以前是可以为null)(如果希望提供默认值必须显示的申明)否则将抛出一个不能解决的异常
  • 容器在无法解决注入时可以根据 @变量名 来推测类型了。
  • BindIf API 不再返回已绑定的api,而是返回bool来表示是否成功绑定,IBindData 将以out参数的形式返回。
  • 全局修饰器的策略调整为即时状态不会再为已经生成的对象进行修饰。因为旧的设计这会导致表达语意不明。
  • 对于基础类型的注入变得更加严格,不能在直接注入基础类型的默认值了例如:int的默认值为0,因为我们认为这可能会导致一些不被发现的错误。
  • 对容器进行了重构,使容器具备更加好的可拓展性及性能,同时也开放了大量可以直接更改容器行为的虚函数,这对于其他框架开发者或者高级定制的开发者可以更加轻松的修改容器行为。
  • 用户参数注入的检查由绝对顺序调整为相对顺序,这意味着参数顺序的要求将会更加松散。

Bug修复

  • 修复了一个bug这个bug导致在调用Instance时如果存在修饰器修改对象的情况,那么不能返回已经被修改的对象。
  • 修复了 App.Trigger 返回值不正确的bug。

移除内容

  • 移除了LRUCache,理由是由于性能不过关。
  • 移除了Inject注入标记的Required选项,因为我们认为Required的存在使开发者不再注重对传入值的校验,这对于非catlib下使用组件是存在安全风险的。

@codecov-io
Copy link

Codecov Report

Merging #16 into master will increase coverage by 0.66%.
The diff coverage is 99.68%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master      #16      +/-   ##
==========================================
+ Coverage   97.42%   98.09%   +0.66%     
==========================================
  Files          30       33       +3     
  Lines        2994     3942     +948     
==========================================
+ Hits         2917     3867     +950     
+ Misses         59       53       -6     
- Partials       18       22       +4
Impacted Files Coverage Δ
src/CatLib.Core/Support/Template/SingleManaged.cs 100% <ø> (ø) ⬆️
src/CatLib.Core/Support/Template/Managed.cs 100% <ø> (ø) ⬆️
...c/CatLib.Core/Support/Container/InjectAttribute.cs 100% <ø> (ø) ⬆️
src/CatLib.Core/Support/Events/Dispatcher.cs 100% <100%> (ø)
src/CatLib.Core/Support/Events/DispatcherExtend.cs 100% <100%> (ø)
src/CatLib.Core/Support/Container/Bindable.cs 100% <100%> (ø)
src/CatLib.Core/Support/Container/BindData.cs 100% <100%> (ø) ⬆️
src/CatLib.Core/CatLib/Facade.cs 100% <100%> (ø) ⬆️
src/CatLib.Core/Support/Container/MethodBind.cs 100% <100%> (ø)
...c/CatLib.Core/Support/Container/MethodContainer.cs 100% <100%> (ø)
... and 18 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 72c3eb6...17494fe. Read the comment docs.

@ymh199478 ymh199478 merged commit 3874a17 into master Jan 20, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants