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