我正在实现一种模仿 System.Data.Common.DbParameter 类的类型。此类型将用于 C#、VB.NET 和 F# 项目。这是一个精简的示例:

type myNewType =
   member val Direction: int = 0 with get,set
   member val Value: Object = null with get,set

类中的 Value 属性是对象类型。在我的类型中,我想将该属性限制为字符串或字节数组。我在想 DU 可能是完美的,但我不确定语法。这是一些伪代码:
type Value =
| Value of String or byte[]

type myNewType =
   member val Direction: int = 0 with get,set
   member val Value: Value = [||] with get,set

有人可以帮我语法吗?提前致谢

最佳答案

type DbParameterValue =
| StringValue of s: string
| BytesValue of bytes: byte[]

type myNewType() =
  member val Direction = 0 with get, set
  member val Value: DbParameterValue = BytesValue([||]) with get, set

成员 val 语法总是让我失望。最难的部分是找出一个好的默认值。我会说空字节数组在这里根本不理想,也许需要一个构造函数参数来设置初始状态应该是什么?

关于.net - F#:使用 DU 来限制属性的类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42582057/

10-17 02:09