CatLib.Core 1.2.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package CatLib.Core --version 1.2.0
NuGet\Install-Package CatLib.Core -Version 1.2.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="CatLib.Core" Version="1.2.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add CatLib.Core --version 1.2.0
#r "nuget: CatLib.Core, 1.2.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install CatLib.Core as a Cake Addin
#addin nuget:?package=CatLib.Core&version=1.2.0

// Install CatLib.Core as a Cake Tool
#tool nuget:?package=CatLib.Core&version=1.2.0

- CatLib是渐进式的框架,可以无缝和现有框架融合。无论您的项目处于哪个阶段您都可以轻易的接入CatLib。
- CatLib提供的依赖注入方案,可以极大程度的帮助项目解耦。
- CatLib提供了大量可靠,可持续的公共组件,帮助企业降低开发成本。
- 基于MIT协议,企业可以通过CatLib的组件化方案建立私有的公共组件库,积攒公共组件。
- 轻量级的框架,所有的组件都是可以被移除的,您可以只选择适合您的组件。
- 中文文档完善,极低的学习成本。
- 面向接口编程,底层组件无感知替换。

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net35 is compatible.  net40 was computed.  net403 was computed.  net45 was computed.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETFramework 3.5

    • No dependencies.
  • .NETStandard 2.0

    • No dependencies.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on CatLib.Core:

Package Downloads
CatLib.Framework.API

- CatLib是渐进式的框架,可以无缝和现有框架融合。无论您的项目处于哪个阶段您都可以轻易的接入CatLib。 - CatLib提供的依赖注入方案,可以极大程度的帮助项目解耦。 - CatLib提供了大量可靠,可持续的公共组件,帮助企业降低开发成本。 - 基于MIT协议,企业可以通过CatLib的组件化方案建立私有的公共组件库,积攒公共组件。 - 轻量级的框架,所有的组件都是可以被移除的,您可以只选择适合您的组件。 - 中文文档完善,极低的学习成本。 - 面向接口编程,底层组件无感知替换。

CatLib.Framework

- CatLib是渐进式的框架,可以无缝和现有框架融合。无论您的项目处于哪个阶段您都可以轻易的接入CatLib。 - CatLib提供的依赖注入方案,可以极大程度的帮助项目解耦。 - CatLib提供了大量可靠,可持续的公共组件,帮助企业降低开发成本。 - 基于MIT协议,企业可以通过CatLib的组件化方案建立私有的公共组件库,积攒公共组件。 - 轻量级的框架,所有的组件都是可以被移除的,您可以只选择适合您的组件。 - 中文文档完善,极低的学习成本。 - 面向接口编程,底层组件无感知替换。

CatLib.FileSystem

CatLib 抽象文件系统是文件系统的抽象库。 通过为许多不同的文件系统提供统一的接口,您可以在没有不进行任何代码重写和改动的的情况下变更文件系统。 使用CatLib抽象文件系统,您可以降低研发难度,提高代码的可测试性和重用性。

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on CatLib.Core:

Repository Stars
CatLib/Framework
deprecated, use : https://github.com/CatLib/CatLib
Version Downloads Last updated
2.0.0-stable 620 12/4/2019
1.4.0 767 3/20/2019
1.3.2 673 2/2/2019
1.3.1 732 1/14/2019
1.3.0 731 1/4/2019
1.3.0-alpha.3 388 12/20/2018
1.3.0-alpha.2 406 12/5/2018
1.3.0-alpha.1 404 12/3/2018
1.2.12 709 11/2/2018
1.2.11 743 10/12/2018
1.2.10 802 10/9/2018
1.2.9 727 9/30/2018
1.2.8 747 9/25/2018
1.2.7 1,011 4/16/2018
1.2.6 949 3/31/2018
1.2.5 1,227 2/14/2018
1.2.4 948 2/14/2018
1.2.3 952 2/13/2018
1.2.2 945 2/13/2018
1.2.1 1,035 2/2/2018
1.2.0 968 1/20/2018
1.1.4 2,132 11/4/2017
1.1.3 1,097 11/1/2017
1.1.1 1,065 10/21/2017
1.1.0 869 10/13/2017
1.0.0 991 9/25/2017

### 新增内容
- App类可以被继承。
- 容器可以为实现 `IDisposable` 接口的对象,在 `Release` 时会自动触发接口。
- 容器增加可变类型接口(`IVariant`),允许将一个基础类型转为复杂类型。
- 容器增加`Params`数据结构,允许容器进行参数名参数匹配。
- 容器增加 `BindMethod` 方法允许向容器注册一个方法。
- 容器增加 `OnRebound` 和 `Watch` 函数,该函数用于监听当已经解决的服务发生重定义时触发的事件,这个事件对实例绑定的服务也会有效。
- 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`被认为是不可以被实例的对象。
- 全局事件系统关联服务容器,这意味着所有的函数绑定事件不会再限制参数了,容器会选择最合适的参数自动注入。
- 全局事件移除生命周期支持,因为全局事件的监听不应该频繁发生变化,生命周期功能会诱导开发者进行不正确的操作
- 优化了注入算法,能够尽可能的推导出注入实例。
- `OnResolving` 和 `OnRelease` 所加入的新的修饰器不会再处理已经生成的实例。实例的变化应该使用`Watch`来监控
- 容器注入的策略被调整为必然注入成功(不为null)(以前是可以为null)(如果希望提供默认值必须显示的申明)否则将抛出一个不能解决的异常
- 容器在无法解决注入时可以根据 `@变量名` 来推测类型了。
- `BindIf` API 不再返回已绑定的api,而是返回bool来表示是否成功绑定,`IBindData` 将以out参数的形式返回。
- 全局修饰器的策略调整为即时状态不会再为已经生成的对象进行修饰。因为旧的设计这会导致表达语意不明。
- 对于基础类型的注入变得更加严格,不能在直接注入基础类型的默认值了例如:int的默认值为0,因为我们认为这可能会导致一些不被发现的错误。
- 对容器进行了重构,使容器具备更加好的可拓展性及性能,同时也开放了大量可以直接更改容器行为的虚函数,这对于其他框架开发者或者高级定制的开发者可以更加轻松的修改容器行为。
- 用户参数注入的检查由绝对顺序调整为相对顺序,这意味着参数顺序的要求将会更加松散。

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

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