无法将 C# 对象转换为 F# 类型
Unable to cast C# object in F# type
我在 F# 中有以下声明:
type ConstArg =
| Bool of bool
| CharArray of char[]
member Lambda (ConstArg : ConstArg[]) = ...
在 C# 中,我构造了一个包含两个值的 char[] 数组:
char[][] list = new char[][] {firstArray, secondArray};
我确实想调用 .Lambda(list)
但我无法将列表转换为 ConstArg[]
C# 中的 F# 可区分联合类型是 class 具有用于可区分联合案例的静态创建方法 NewXXX
。在您的情况下,将有带有签名的方法
public static ConstArg NewCharArray(char[] item)
您应该使用此方法将每个字符数组转换为 ConstArg
类型的实例:
Lambda(list.Select(ConstArg.NewCharArray).ToArray())
// or without LINQ
Lambda(Array.ConvertAll(list, ConstArg.NewCharArray))
请注意,F# 中的参数名称应按照 naming conventions
的驼峰式命名
我在 F# 中有以下声明:
type ConstArg =
| Bool of bool
| CharArray of char[]
member Lambda (ConstArg : ConstArg[]) = ...
在 C# 中,我构造了一个包含两个值的 char[] 数组:
char[][] list = new char[][] {firstArray, secondArray};
我确实想调用 .Lambda(list)
但我无法将列表转换为 ConstArg[]
C# 中的 F# 可区分联合类型是 class 具有用于可区分联合案例的静态创建方法 NewXXX
。在您的情况下,将有带有签名的方法
public static ConstArg NewCharArray(char[] item)
您应该使用此方法将每个字符数组转换为 ConstArg
类型的实例:
Lambda(list.Select(ConstArg.NewCharArray).ToArray())
// or without LINQ
Lambda(Array.ConvertAll(list, ConstArg.NewCharArray))
请注意,F# 中的参数名称应按照 naming conventions
的驼峰式命名