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

Jim*_*H44 0 c# mono conditional-compilation

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

#if __MonoCS__
    public static SqliteConnection NewConnection
#else
    public static SQLiteConnection NewConnection
#endif
Run Code Online (Sandbox Code Playgroud)

在CI中可以#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
Run Code Online (Sandbox Code Playgroud)

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


吉姆,再次感谢

Jon*_*eet 10

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

#if __MonoCS__
using SQLiteConnection = Foo.Bar.SqliteConnection;
#endif
Run Code Online (Sandbox Code Playgroud)

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

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