计量单位如何表示?

时间:2011-06-23 18:05:07

标签: f# units-of-measurement

我刚开始使用F#,我想知道计量单位:

我知道它们只在编译时出现,而Reflector确认了这一点:创建一个不是别名的度量单位会创建一个具有MeasureAttribute属性的类,但除此之外,float<km/h>代表如同System.Double。并且类型,构造函数参数或属性没有属性。

到目前为止我明白了。但是当我从另一个项目引用编译的程序集时,它似乎知道所有关于度量单位的信息,包括别名。它是如何获得这些信息的?他们在集会中的哪个地方?

1 个答案:

答案 0 :(得分:10)

F#在编译程序集的资源中存储“额外类型信息”,F#编译器知道如何读取该资源。因此,虽然一个有区别的联合只是被编译成一个类,并且一个度量单位被删除为double,但是在汇编中的资源中有额外的F#特定类型信息,这样当F#编译器读取它时,它就可以重新构建额外的“F#元数据”。

PowerPack有一个元数据阅读器,可让您以编程方式访问它。