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

单声道系统数据

  •  1
  • Opflash  · 技术社区  · 16 年前

    Mono中的System.Data是否已扩展到包含额外功能? 我正试图利用为mono.data.sqlexpressions中的mono编写的SQL解析器,但是当sqlexpressions命名空间中的所有类都包含在内时,项目仍然无法编译,因为system.data中的类不匹配。
    例如,System.Data.DataColumn不定义PropertyChanged事件。 我需要使用mono系统数据库吗? 当mono-datacolumn类包含在项目中时,不会发生此编译错误(它引用了在.NET框架中找不到的类,如datacategory)。

    或者,对于如何将Mono中的SQL解析器移植到Microsoft的.NET框架中,我们将不胜感激。我尝试下载源代码并将缺少的库添加到项目中,但这种方法似乎有缺陷。缺少依赖项的数量似乎在增加,而不是解决问题。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Alexandre Gomes    16 年前

    Mono试图与MS的实现兼容二进制和API。这意味着,除了一些内部支持方法和类之外,Mono所公开的所有API都应该与MS.NET匹配101。这是为了避免像人们假设存在一个方法那样的复杂,因为它在Mono中编译,然后根本不在MS.NET上工作。

    当新的代码和特性由单贡献者实现时,它通常被合并到单独的程序集和项目中。顾名思义,mono.data是一个“扩展”,所以需要包含所有依赖程序集才能构建它是有意义的。如果mono.data.dll及其deps将在ms.net上运行,或检查文档并测试它。

    至于第二个问题,我不能告诉你具体的细节,但是除非代码有特定的指令要在Windows上运行,否则移植很可能需要大量的工作。与任何API一样,很多代码没有暴露在公共接口中,在移植代码时需要处理实现的内部特性。我建议您花点时间分析一下代码的工作原理,然后尝试在MS.NET上运行它,方法是删除尽可能多的关于单代码的deps。最后,如果代码足够兼容,您应该考虑使用编译指令和if来修补mono的源代码。Mono pragma为将来的用户省去了麻烦。