3

最近我看到这个文档说明了 Caliburn 有多棒(实际上并没有将它与微框架进行比较,这就足够了)。我在 Caliburn 工作了一年多,对它知之甚少。

因此,也许有人可以解释以下内容(其中一些我可以理解,但对与 caliburn 的关系一无所知):

  1. 验证抽象
  2. 模块框架
  3. 基于 ExpressionTree 的运行时委托生成
  4. 视图模型工厂
  5. 外壳框架

我正在使用 V1.1,所以如果 2.0 中有新内容,只需说它属于新版本,我可能会在未来学习它。

4

1 回答 1

7
  1. 验证抽象旨在在 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服务。

  2. Caliburn 本身使用模块框架来管理其自身模块的配置和初始化。它还可以用于创建独立的应用程序模块:Caliburn 将负责发现它们(如果它们的程序集在 IAssemblySource 中注册)并驱动它们的初始化;

  3. Caliburn 不使用反射来调用动作,而是利用表达式树动态构建委托来创建编译的 lambda;
  4. Caliburn 使用 ViewModelFactory 服务来抽象 VM 的创建,无论是按类型还是按主题处理;
  5. ShellFramework 包含一组对构建大多数应用程序有用的工具;它包括一些自定义IResult(以及创建它们的流利风格的静态方法)和一些预构建的 ViewModel(菜单和问题/消息对话框)来完成常见的应用程序任务。
于 2011-01-03T13:46:01.490 回答