我为我们的项目创建了一个代码生成器,用于生成大量的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是在另一个文件中设置的。
还有其他办法吗?
答案 0 :(得分:1)
仅为正在使用 的表生成代码。
答案 1 :(得分:1)
您可以在Visual Studio中的项目属性页面的“构建”选项卡中定义条件代码编译符号,或者在命令行中调用编译器时使用命令行开关定义。这些符号可用于所有文件。
答案 2 :(得分:0)
您可以通过调用 Activator.CreateInstance()
动态加载类型,并捕获在类型不存在时发生的异常。