使用该RequireQualifiedAccess属性,工会案例必须被称为MyUnion.MyCase而不是just MyCase。这样可以防止在封闭的名称空间或模块中发生名称冲突:
type [<RequireQualifiedAccess>] Requirements = None | Single | All // 使用具有合格访问权限的DU let noRequirements = Requirements.None // 这里,“无”仍指标准的F#选项情况 let getNothing () = None // 编译器错误,除非已在所有其他地方定义了All let invalid = All
例如,如果System已打开,请Single参阅System.Single。与工会的案件没有冲突Requirements.Single。