【问题标题】:F# enum: expected to have type xxx but here has type xxxF# 枚举:预期有 xxx 类型,但这里有 xxx 类型
【发布时间】:2016-11-06 10:33:56
【问题描述】:

我正在尝试使用 LightningDB.net。其中一种方法接受参数作为枚举标志。

C#中的方法声明:

Open(EnvironmentOpenFlags openFlags = EnvironmentOpenFlags.None, UnixAccessMode accessMode = UnixAccessMode.Default)

当我为 openFlags 提供参数时,例如:env.Open(EnvironmentOpenFlags.NoSync) 我收到编译器错误:

错误 FS0001:此表达式应具有 LightningDB.EnvironmentOpenFlags 类型,但此处具有 LightningDB.EnvironmentOpenFlags 类型

当我为方法的第二个参数提供参数时,它起作用了:

env.Open(accessMode = UnixAccessMode.Default)

任何组合,包括尝试将 enum 转换为 int 然后再返回总是会导致编译器错误。

这是在 VS 2015 上。知道可能是什么原因造成的以及如何解决?

【问题讨论】:

  • 我会检查你是否以某种方式引用了同一个 dll 的两个不同版本
  • 我好像没有,此外,如果是这样的话,第二个参数也会出现错误,它也是枚举标志类型,对吧?跨度>
  • 但也许第二个 Arg 来自不同的 dll
  • 实际上这很奇怪,一个不同的程序集导致了这种情况,即使我没有从中打开命名空间。我认为它嵌入了原始的 LightningDB.net 程序集。谢谢指点。

标签: enums f#


【解决方案1】:

程序集在项目中一次,一次直接引用,第二次嵌入到另一个程序集中,从而导致错误。

【讨论】:

    猜你喜欢
    • 2013-01-10
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多