代码之家  ›  专栏  ›  技术社区  ›  Faisal

基于安装类型启用/禁用功能

  •  2
  • Faisal  · 技术社区  · 14 年前

    在您看来,我们应该如何根据安装类型编写代码来处理启用或禁用功能。目的是为单独的版本提供单一安装,并根据安装类型提供功能。

    一种方法是有条件地编译代码,但这会使代码变脏并且难以维护。

    3 回复  |  直到 14 年前
        1
  •  3
  •   Anton Gogolev    14 年前

    您可以使用基于插件的体系结构,其中所有(或大多数)功能都作为扩展核心应用程序功能的插件实现。这样,您的版本将只在安装/发货的程序集等方面有所不同。

    当然,使用这种方法,您可以通过复制丢失的程序集,使“入门”版变成“专业版”。为了解决这个问题,您仍然需要求助于条件编译,但是您必须有条件地编译负责加载这些插件的块。

    例如,假设对于您的专业版,您希望能够添加,例如,导出功能。为此,您将创建一个单独的 IExporter 插件接口。以下是您处理此问题的方法:

    public IExporter GetExporter(FormatType format)
    {
    #if PROFESSIONAL_EDITION
        return ExporterRegistry.GetExporter(format);
    #else
        return NullExporter();
    #endif        
    }   
    

    因此,您的专业版将能够通过自定义扩展 出口商 S,而非专业版,即使所有“专业版”程序集都已就位,也无法使用此功能。

        2
  •  2
  •   Giorgi    14 年前

    可以使用条件编译或条件属性。 以下是一篇解释这些主题的文章: Building and Maintaining Multiple Application Editions using Conditional Compilation

        3
  •  0
  •   DaveWeber    14 年前

    标记将是一个选项,但我猜这将是“条件编译”。安装类型将设置一个标志,基于这些标志,一些代码将被执行,否则将被忽略。

    你能有不同的代码分支吗?这样,每个版本将只有该安装类型的相关代码。不需要携带永远不会使用的代码。