【问题标题】:C# shortcut for #if ... #else ... #endif like #define something as string#if ... #else ... #endif like #define something as string 的 C# 快捷方式
【发布时间】:2016-11-16 16:06:10
【问题描述】:

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

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

在 C 语言中,我可以先 #if 然后 #define 某些东西,#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# 项目中做到这一点?我试过的都没有用。

再次感谢,
吉姆

【问题讨论】:

    标签: c# mono conditional-compilation


    【解决方案1】:

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

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

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

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

    【讨论】:

    • @jon 这两行有什么区别? #if MonoCS public static SqliteConnection NewConnection #else public static SQLiteConnection NewConnection #endif
    • @viveknuna:看SQL的外壳
    • 谢谢。我最终在每个依赖于 SQLite 的文件的前面添加了“使用”语句。我无法在此评论中格式化代码,因此我将编辑我原来的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 2011-06-14
    • 2014-10-04
    相关资源
    最近更新 更多