【发布时间】:2010-10-25 08:15:42
【问题描述】:
我们正在开发一个应用程序的两个版本。不是应用程序的精简版和标准版的意义上,其中一个版本将具有有限的功能等。我们实际上将在应用程序中显示不同类型的信息,具体取决于版本(这是我描述它的最佳方式涉及太多细节)。
为了区分我们考虑使用条件属性和#if 指令的应用程序的两个版本(如果有任何其他选项或比这两个更好的方法,我愿意提供建议)。经过一些研究和辩论,我们决定使用#if 方法,因为这不会在编译过程中包含不必要的代码(而条件属性只会删除对不满足条件的方法的调用,但仍然包括方法......如果我没记错的话)。我意识到这两者并不相互排斥,所以如果需要,我们可以随时混合搭配。
无论如何...我们现在想知道的是,是否有一种方法可以在编译期间仅包含某些 Windows 窗体,具体取决于我们正在编译的应用程序的版本。我们已经拆分了所有的逻辑,所以表单实际上只是表单,其中只有很少的代码(主要是调用处理所有业务逻辑的表单管理器类)。表单管理器类将包含其中的一些#if 语句,因此代码可以在应用程序的两个版本中重用,只要可能(而不是创建两个类并在类上放置条件属性......虽然也许这是我们应该考虑的)。
有人知道这样做的好方法吗?
TIA
更新:
只是我们实际决定要做的事情的仅供参考。我们将不同版本的表单放入单独的命名空间中,然后只需在管理所有表单的类顶部的命名空间 using 语句周围使用 #if 语句。工作很顺利,工作量很小。
【问题讨论】:
-
为什么不简单地将整个
Form类放在条件 if 中? -
我们是否必须为每个部分类文件(例如由设计者使用所有 Windows 组件代码创建的文件等)执行此操作?
标签: c# .net conditional-compilation