可以包含基于类的存在的代码吗?

时间:2011-10-21 19:42:55

标签: c# .net visual-studio-2010 c-preprocessor

我为我们的项目创建了一个代码生成器,用于生成大量的crud操作,以及我们数据库的基本dataAccess对象。 (我们没有使用其他一些工具,因为我们不允许执行动态sql,只允许存储过程。)

我现在想的是我们有1,200张桌子。我不希望将每个表对象都包含在我们的项目中(直到它实际上将被使用)。

我的对象包含引用其他对象的属性(如父/子关系)。

说我有我的2个对象(它们在不同的文件中)

public class ClassA{
  public ClassB GetClassBforA{get;set;}
  //Lost of other properties and code
}

public class ClassB{/* bunch of stuff*/}

现在我知道没有人正在使用ClassB,我不想在我们的项目中包含(还),因为它有很多对其他类和工具的引用。我希望ClassA上的属性不被编译。 (因为这个文件是自动生成的,所以必然会被覆盖)

我想的可能是这样的事情

public class ClassA{
  #if ClassBIsDefind
  public ClassB GetClassBforA{get;set;}
  #endif
  //Lost of other properties and code
}


#define ClassBIsDefind
public class ClassB{/* bunch of stuff*/}

但是这不起作用,因为ClassBIsDefind是在另一个文件中设置的。

还有其他办法吗?

3 个答案:

答案 0 :(得分:1)

仅为正在使用 的表生成代码。

答案 1 :(得分:1)

您可以在Visual Studio中的项目属性页面的“构建”选项卡中定义条件代码编译符号,或者在命令行中调用编译器时使用命令行开关定义。这些符号可用于所有文件。

答案 2 :(得分:0)

您可以通过调用 Activator.CreateInstance() 动态加载类型,并捕获在类型不存在时发生的异常。

相关问题