度量单位如何表示?

问题描述

| 我只是从F#开始,想知道度量单位: 我知道它们仅在编译时出现,而Reflector确认了这一点:创建不是别名的度量单位将创建具有
MeasureAttribute
属性的类,但除此之外,
float<km/h>
表示为普通
System.Double
。并且在类型,构造函数参数或属性上没有属性。 到目前为止,我明白了。但是,当我从另一个项目引用编译后的程序集时,它似乎了解所有有关度量单位的信息,包括别名。它如何获得这些信息?他们在集合中的哪儿?     

解决方法

        F#将“额外类型信息”存储在已编译程序集中的资源中,并且F#编译器知道如何读取该资源。因此,尽管将已区分的并集仅编译为一个类,并且将度量单位擦除为双精度,但是程序集中资源中存在额外的特定于F#的类型信息,以便当F#编译器读取它时,它可以重新构造额外的\“ F#元数据\”。 PowerPack具有元数据读取器,可让您以编程方式对其进行访问。