我的联合类型有一个空案例。
type Default =
| Default
这种类型有一个目的,但它并不意味着可见或可用。 不幸的是,我必须在需要可见的内联函数中使用它。这使我无法将类型或案例设为私有。
我提出的解决方案是使用CompilerMessageAttribute
来表示错误,无论何时使用它。这没关系,但现在我无法编译自己的程序集,因为IT使用它。
是否有办法仅在引用我的程序集的程序集使用它时发出错误信号?
答案 0 :(得分:8)
让我重申一下要求,以确保我理解它们:
我不知道如何使用标准工具来做到这一点。
我可以看到两种可能的解决方案。
如果只有一个调用程序集需要使用内联函数,那么使用InternalsVisibleToAttribute
将内部类型设置为内部然后将调用程序集作为友元程序集。
我能想到的唯一另一种选择是默默无闻的安全。在一些笨拙命名的模块中隐藏类型并要求模块限定。这将阻止意外使用该类型,如果没有别的。 您甚至可以添加构建步骤来检查没有源代码引用模块名称。
[<RequireQualifiedAccessAttribute>]
module ``Dont Use This`` =
type Default =
| Default
let x = ``Dont Use This``.Default
是的,这非常愚蠢。