【发布时间】:2014-10-26 13:08:44
【问题描述】:
我在 C#.NET DLL 中的命名空间 MyNamespace 中的公共类 MyClass 中有以下枚举,我引用并从我的 F# 模块打开:
public enum MyEnum {
ValueA,
ValueB,
ValueC}
我想在我的 F# 模块中将字符串 s 转换为其等效的 MyEnum(如果可能)。试图实现它...
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))
...给我值不是函数,不能应用错误。
我在 F# 代码的其他部分使用 MyEnum 很好,所以我想我的 C#.NET DLL 没有问题。
为了避免一些可能的问题:-)
- 我需要将字符串转换为枚举,因为某些
MyEnum值是 使用.ToString()序列化为 XML 并反序列化枚举 从 XML 将作为参数传递给 F# 函数 - 使用与
MyEnum等效的int进行写入和读取 XML 是不可取的,因为 XML 应该是人类可读的,而且它更可能是int等效的MyClass比.ToString()的值要更改。
【问题讨论】:
标签: string enums f# type-conversion