#if ... #else ... #endif 的 C# 快捷方式,例如 #define something as string

C# shortcut for #if ... #else ... #endif like #define something as string

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

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

在 C 中,我可以 #if 然后 #define 一些东西,#else 并将它定义为其他东西。

我知道 C# 预处理器不允许我想要的东西,但是有没有更简单的方法来处理 Windows 和 Linux 的 SQLite 之间的差异?

谢谢,
吉姆


感谢那些回答的人。
依赖于 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# 项目中做到这一点?我试过都没有用。

再次感谢,
吉姆

嗯,你可以使用 using 别名指令:

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

然后你可以在同一个文件的任何地方使用SQLiteConnection

不过,您可能希望使用适配器模式将其仅放在一段代码中,这样您的所有其余代码都可以采用相同的方式。