#if ... #else的##快捷方式... #endif喜欢#define something as string

时间:2016-11-16 16:06:10

标签: c# mono conditional-compilation

在C#dotNET for Mono中,有更简单的方法吗?

#if __MonoCS__
    public static SqliteConnection NewConnection
#else
    public static SQLiteConnection NewConnection
#endif

在C中,我可以#if然后#define something,#else并将其定义为其他内容。

我知道C#预处理器不能满足我的需求,但有没有更简单的方法来应对SQLite for Windows和Linux之间的差异?

谢谢,
吉姆

感谢那些回答的人 依赖于SQLite的文件现在包含这样的语句:

#if __MonoCS__
    using Mono.Data.Sqlite;
    using SQLiteCommand =     Mono.Data.Sqlite.SqliteCommand;
    using SQLiteConnection =  Mono.Data.Sqlite.SqliteConnection;
    using SQLiteException =   Mono.Data.Sqlite.SqliteException;
    using SQLiteParameter =   Mono.Data.Sqlite.SqliteParameter;
    using SQLiteTransaction = Mono.Data.Sqlite.SqliteTransaction;
#else
    using System.Data.SQLite;
#endif

在C中,我会将所有内容放在.h文件中,并在需要的地方#include它。有没有办法在Mono C#项目中做到这一点?我没有尝试过任何工作。

再次感谢,
吉姆

1 个答案:

答案 0 :(得分:10)

好吧,您可以使用using alias指令:

#if __MonoCS__
using SQLiteConnection = Foo.Bar.SqliteConnection;
#endif

然后,您可以在同一个文件中的任何位置使用SQLiteConnection

您可能希望使用适配器模式将它放在一段代码中,因此所有其余代码都可以是相同的。