2010-06-09 46 views
2

我正在写有两个类,它们提供基本相同的功能的应用程序,但针对不同的情况。我想要有三个版本的软件 - 一个是用户可以更改ini文件来配置程序以使用两个类中的一个,然后是一个只使用两个类中的一个的版本。C#VS 2008生成配置 - 使用不同类型的不同建立

现在我有它通过一个ini文件的工作,但我希望能够建立一个不包括不需要的类的代码在所有版本。

什么是最好的方式去做这件事?我目前的思路是,因为两个类都来自一个通用接口,所以我只需添加一个编译时条件来查看活动构建配置并决定是否编译该类。这是什么语法?

预先感谢您的帮助和投入!

回答

1

可以使用条件编译符号,这是类似于您在C/C++做什么用的预编译指示。

例如:

interface IThing { 
} 

#if PLATFORM_A 

class ThingImplementation : IThing { 
} 

#endif 

#if PLATFORM_B 

class ThingImplementation : IThing { 
} 

#endif 

您可以通过在项目的设置添加一个条件编译符号的“生成”选项卡挑desider实施。

对于一个非常基本的实现不需要的接口其实在所有的,只是删除基于要编译支持(即使接口是强制执行的一致性是有用的)平台上的不必要的代码。

class Thing { 

#if PLATFORM_A 

    Platform specific code 

#endif 

#if PLATFORM_B 

    Platform specific code 

#endif 

} 
+0

我如何使用构建类型作为条件编译符号。例如无需添加新的构建类型,我将如何执行类似于DEBUG或RELEASE的操作。感谢您的回答! – evan 2010-06-09 21:51:44

+0

当使用默认的“Debug”构建配置时,Visual Studio添加了DEBUG常量。因此,您可以使用#if DEBUG而不必定义额外的符号(请注意,发布配置没有定义RELEASE,而是简单地没有定义DEBUG)。对于额外的符号,您必须手动将它们添加到您创建的构建配置中(在VS项目的“构建”选项卡中)。我不认为有一种方法可以在使用#if指令时检查构建配置的名称。 – LorenzCK 2010-06-10 13:12:39

1

最好把每个派生类在自己组装。在运行时,加载与应用程序一起删除的程序集,并将其转换为基本接口或抽象类。

+0

所以现在我有一个接口和两个派生类。您认为我应该将实现从主代码中提取出来并放入两个程序集中,然后检查哪些程序有运行时?我将如何做到这一点?感谢您的帮助! – evan 2010-06-09 18:18:56

+0

NM,我想我明白了,谢谢! – evan 2010-06-09 18:21:22

相关问题