作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在公共(public)类中有以下枚举 MyClass
在命名空间 MyNamespace
在 C#.NET DLL 中,我从 F# 模块引用并打开:
public enum MyEnum {
ValueA,
ValueB,
ValueC}
我想转换字符串s
到其MyEnum
我的 F# 模块中的等效项(如果可能)。试图实现它就像...
let myEnumValue = (MyClass.MyEnum) (Enum.Parse(typedefof<MyClass.MyEnum>, s))
...给我类型名称和/或对象构造函数的无效使用。如果需要,请使用“new”并将构造函数应用于其参数...错误。如果我使用 typeof<MyClass.MyEnum>
也是如此而不是typedefof<MyClass.MyEnum>
。正在尝试...
let myEnumValue = (typedefof<MyClass.MyEnum>) (Enum.Parse(typedefof<MyClass.MyEnum>, s))
...或者...
let myEnumValue = (typeof<MyClass.MyEnum>) (Enum.Parse(typedefof<MyClass.MyEnum>, s))
...给我该值不是函数,无法应用错误。
我用MyEnum
我的 F# 代码的其他部分很好,所以我猜我的 C#.NET DLL 没有问题。
并避免一些可能出现的问题:-)
MyEnum
值是使用 .ToString()
序列化为 XML和反序列化的枚举来自 XML 的数据将作为参数传递给 F# 函数int
相当于 MyEnum
写入和读取XML 是不需要的,因为 XML 应该是人类可读的,而且它更有可能用于 int
相当于 MyClass
与 .ToString()
相比要更改的值.最佳答案
代码的问题在于您尝试将对象(由 Parse 方法返回)转换为 MyClass.MyEnum 实例的方式。您尝试的语法会导致“类型名称的无效使用”错误。
在 F# 中,您可以按如下方式进行向下转换:
let myEnumValue = Enum.Parse(typedefof<MyClass.MyEnum>, s) :?> MyClass.MyEnum
关于string - F# 字符串到枚举的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26573318/
我是一名优秀的程序员,十分优秀!