代码之家  ›  专栏  ›  技术社区  ›  JimH44

C#快捷键用于#if…#,else…35endif,like#。将某物定义为字符串

  •  1
  • JimH44  · 技术社区  · 9 年前

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

    在C语言中,我可以#if,然后"定义某物,#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文件中,并#将其包含在需要的地方。在Mono C#项目中有没有办法做到这一点?我试过的都不管用。

    再次感谢,
    吉姆

    1 回复  |  直到 9 年前
        1
  •  10
  •   Jon Skeet    9 年前

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

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

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