什么是Caliburn验证抽象

Che*_*rot 3 caliburn

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

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

  1. 验证抽象
  2. 模块框架
  3. 基于ExpressionTree的运行时委托生成
  4. ViewModelFactory
  5. ShellFramework

我正在使用V1.1,所以如果2.0中的新内容,只是说它属于新版本,我将来可能会学到它.

Mar*_*ola 7

  1. 验证抽象旨在在ViewModels中插入验证基础结构.
    Caliburn DefaultValidator使用System.ComponentModel.DataAnnotations,但也可以使用Fluent Validation的适配器.
    虽然验证可以直接从应用程序代码中使用,但框架主要在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(菜单和问题/消息对话框)来完成常见的应用程序任务.