什么是Caliburn验证抽象

时间:2010-12-30 21:46:44

标签: caliburn

最近我看到this文件指出了Caliburn有多棒(不是真的将它与微框架进行比较,这就足够了)。 我和Caliburn工作了一年多,并且不知道很多事情。

所以也许有人可以解释以下内容(其中一些我可以理解,但没有关于与校准的关系):

  1. 验证抽象
  2. 模块框架
  3. 基于ExpressionTree的运行时委托生成
  4. ViewModelFactory
  5. ShellFramework
  6. 我正在使用V1.1,所以如果2.0版中有新内容,只要说它属于新版本,我将来可能会学到它。

1 个答案:

答案 0 :(得分:7)

  1. 验证抽象旨在在ViewModels中插入验证基础架构 Caliburn的DefaultValidator使用System.ComponentModel.DataAnnotations,但也可以使用Fluent Validation的适配器。
    虽然验证可以直接从应用程序代码中使用,但框架主要在AOP验证行为中使用它,它为模型提供了自动IDataErrorInfo实现。

    如果您的模型已经实现IDataErrorInfo,Caliburn可以利用纯WPF绑定挂钩验证(作为传统绑定过程的一部分)。
    然而,手动实现IDataErrorInfo很无聊并且可能导致难以编写的代码,因此引入了AOP [ValidateAttribute]。 要启用它,您必须配置容器以使用可用的代理工厂(基于Castle.DynamicProxy):

    myContainerAdapter .WithProxyFactory<Caliburn.DynamicProxy.DynamicProxyFactory>()

    这指示容器适配器检查从容器中提取的ViewModel(和其他组件)上应用的behavior属性,并创建实现指定行为的子类。

    [Validate]行为实现只是将'IDataErrorInfo'调用委托给实际的IValidator服务。

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

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