F# v3.1中命名联合字段的编译形式

F# v3.1中命名联合字段的编译形式,f#,discriminated-union,f#-3.1,F#,Discriminated Union,F# 3.1,首先,F#3.1规范是否在线提供?如果是这样,答案应该很容易找到 我想知道(在3.1中添加的)已编译的歧视联合形式是否会包含带有字段名称的属性,而不是通常的Item1,Item2。。。属性。据我所知,该规范尚不可用,因此唯一的方法是尝试。 我安装了VS 2013 RC,所以我想我可以使用此联合检查: type Expression = | Add of Left:Expression * Right:Expression | Constant of number:int 正如预期的那

首先,F#3.1规范是否在线提供?如果是这样,答案应该很容易找到


我想知道(在3.1中添加的)已编译的歧视联合形式是否会包含带有字段名称的属性,而不是通常的
Item1
Item2
。。。属性。

据我所知,该规范尚不可用,因此唯一的方法是尝试。 我安装了VS 2013 RC,所以我想我可以使用此联合检查:

type Expression = 
  | Add of Left:Expression * Right:Expression
  | Constant of number:int
正如预期的那样,它确实生成了命名属性,这些属性可以从C#中很好地使用:

事实上,它还在构造函数的参数中使用名称:


如果您将它们用于C#互操作性,那么您可能希望在
PascalCase
中编写联合成员名称,因为如果您使用小写名称,编译器不会自动将属性名称大写(但有趣的是,它确实对参数使用小写名称).

我认为该规范还没有发布。反编译可能是你最好的选择。