F#中的全局常量 - 如何实现

28

我需要为多个相关项目在AssemblyVersion属性中设置版本号。

在C#中,我使用以下代码:

public class Constants {
    public const string Version = "1.2.3.4";
}

那么它可以如下使用:

[assembly:AssemblyVersion(Constants.Version)]

在 F# 中,等价的构造是什么?我尝试过多种绑定方式作为属性参数都没有成功。

2个回答

45

使用属性Literal

[<Literal>] 
let version = "1.2.3.4"

[<assembly:AssemblyVersion(version)>]

9

自从我自己陷入这个陷阱后,我想为任何跟进的人分享一下。 'Literal(字面)'要求字母以大写字母开头。当您尝试在模式匹配结构中使用文字时,这将使您受到打击。

参考: Literal attribute not working


2
只有在您想在模式匹配上下文中使用字面值时,才是正确的。 - kvb
1
模式匹配在F#中非常重要。如果无法使用模式匹配,它的实用性将大大降低。 - James Moore
5
这个回答最好作为对被接受的答案的评论。 - CaringDev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接