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