F#:使用DU来限制属性的类型

Jam*_*xon 3 .net f#

我正在实现一个模仿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
Run Code Online (Sandbox Code Playgroud)

类中的Value属性是object类型.在我的类型中,我想将该属性限制为字符串或字节数组.我认为DU可能是完美的,但我不确定语法.这是一些psudo代码:

type Value =
| Value of String or byte[]

type myNewType =
   member val Direction: int = 0 with get,set
   member val Value: Value = [||] with get,set
Run Code Online (Sandbox Code Playgroud)

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

Che*_*usk 5

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
Run Code Online (Sandbox Code Playgroud)

成员val语法总是让我兴奋.最难的部分是找出一个好的默认值.我想说空字节数组在这里根本不理想,或许可以用构造函数参数来设置初始状态应该是什么?