最近我看到这个文档说明了 Caliburn 有多棒(实际上并没有将它与微框架进行比较,这就足够了)。我在 Caliburn 工作了一年多,对它知之甚少。
因此,也许有人可以解释以下内容(其中一些我可以理解,但对与 caliburn 的关系一无所知):
- 验证抽象
- 模块框架
- 基于 ExpressionTree 的运行时委托生成
- 视图模型工厂
- 外壳框架
我正在使用 V1.1,所以如果 2.0 中有新内容,只需说它属于新版本,我可能会在未来学习它。
验证抽象旨在在 ViewModels 中插入验证基础设施。
Caliburn使用 System.ComponentModel.DataAnnotations,但也可以使用Fluent ValidationDefaultValidator
的适配器。
虽然验证可以直接从应用程序代码中使用,但框架主要在 AOP 验证行为中使用它,它为模型提供了自动实现。IDataErrorInfo
如果您的模型已经实现IDataErrorInfo
,Caliburn 能够利用普通 WPF 绑定挂钩验证(作为传统绑定过程的一部分)。
然而,IDataErrorInfo
手动实现很无聊,并且可能导致难以维护的代码,因此[ValidateAttribute]
引入了 AOP。要启用它,您必须将容器配置为使用可用的代理工厂(基于 Castle.DynamicProxy):
myContainerAdapter
.WithProxyFactory<Caliburn.DynamicProxy.DynamicProxyFactory>()
这指示容器适配器检查应用于从容器中提取的 ViewModel(和其他组件)上的行为属性,并创建它们的子类来实现指定的行为。
行为实现只是将[Validate]
“IDataErrorInfo”调用委托给实际IValidator
服务。
Caliburn 本身使用模块框架来管理其自身模块的配置和初始化。它还可以用于创建独立的应用程序模块:Caliburn 将负责发现它们(如果它们的程序集在 IAssemblySource 中注册)并驱动它们的初始化;
IResult
(以及创建它们的流利风格的静态方法)和一些预构建的 ViewModel(菜单和问题/消息对话框)来完成常见的应用程序任务。