- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
The CLI compiled form of all non-public entities is
internal
.
在我的主项目中我定义了一个函数
namespace MyNamespace.Foo
module Bar =
module Baz =
let private myFun ...
在主项目的``AssemblyInfo.fs`中我有
[<assembly: InternalsVisibleTo("MyNamespace.Tests")>]
(我已经仔细检查了名字。)
但是,在测试程序集(也是 F#)中,我在引用 myFun
时遇到错误,提示 无法从此代码位置访问值“myFun”。
如果我从 myFun
的定义中删除 private
就可以正常工作。
奇怪的是,即使没有 InternalsVisibleTo
,我也可以从 C# 项目中调用私有(private) myFun
。
当 private
实体编译为 internal
并且我指定了 InternalsVisibleTo 时,为什么无法从测试程序集访问私有(private)
在主程序集上?myFun
最佳答案
我觉得语言层面和编译代码层面是有区别的。
在语言级别,private
的行为是私有(private)的,因此您只能调用模块内的函数。如果您将绑定(bind)标记为 internal
,它将表现为内部的,您将能够从同一个程序集中调用它。
在编译代码级别,private
被编译为 internal
,大概这样您就可以使用诸如闭包和序列表达式之类的东西,但是 F# 编译器知道这只是一个编译神器。
我没有尝试过,但我猜想如果您从 C# 引用程序集,那么它的行为将与 internal
相同,因为 C# 编译器不理解 F# 编译器放置的特殊元数据in 来标记 let 绑定(bind)。
关于f# - 如果 F# 中的私有(private)实体编译为内部,为什么 InternalsVisibleTo 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46581532/
我正在尝试使用 InternalsVisibleTo 程序集属性使 .NET 类库中的内部类对我的单元测试项目可见。由于某种原因,我不断收到一条错误消息: 'MyClassName' is inacc
我有两个程序集,比如 Main 和 Sub,其中 Sub 依赖于 Main。 Main 定义了一些具有protected internal virtual 成员的类,我想在Sub 中覆盖它们。我将这些
将 InternalsVisibleTo 属性与强名称程序集一起使用是否存在任何安全问题?我知道以这种方式接收信息的程序集必须有私钥来解密消息,并且在 InternalsVisibleTo 属性中您以
与这个问题相关的是,AssemblyInfo 的生成是如何工作的? 我一直将 InternalsVisibleTo 放在程序集的第一类文件中,我意识到它会很有用。将其他程序集属性放在 Assembly
我将 InternalsVisibleTo 应用于我的一个项目,以便其内部结构对测试项目可见。但是,(我知道这很奇怪)我需要标记一些内部类,以便它们对通过 InternalsVisibleTo 指示的
最近,我遇到了使内部类和方法对其他程序集可见的 InternalsVisibleTo 方法。虽然这在拥有一大堆程序集并且希望避免循环依赖或代码重复的应用程序中非常有用,但我们中的一些人认为这可能会暴露
我们有很多包含内部类的程序集,我们通过使用 InternalsVisibleTo 使内部类对单元测试程序集可见来对其进行单元测试。 这工作正常,但问题是一旦您使用 InternalsVisibleTo
在我继续之前,我确实经历了这个 InternalsVisibleTo attribute ain’t workin'! 因此标题 好吧,我的项目有一个工作版本,它使用如下内容。 [assembly:
是否可以为生产和验收测试禁用 InternalsVisibleTo? 虽然我希望能够在设计时探查内部结构,但我真的不希望这些在更高级别的测试中暴露出来。 最佳答案 您可以在 preprocessor
我插入一行: [程序集:InternalsVisibleTo("MyTests")] 在我的测试项目中(Properties/AssemblyInfo.cs),其中 MyTests 是单元测试项目的名
我正在尝试在.net 中对私有(private)函数进行单元测试。此私有(private)函数返回 myClass 类型的集合,这是一个内部类。 我使用了程序集属性 InternalsVisibleT
我正在尝试做一些不寻常的事情...... 我有这个类 Foo : public class Foo { public Foo(string name) { this.N
InternalsVisibleTo 不适用于我的托管 C++ 项目,但适用于我的 C# 项目。任何帮助将不胜感激。这是一个简化的布局。 项目 A - C#,有一个我想从 B/C 访问的内部属性。 项
似乎将此属性用于非公共(public)方法/属性的单元测试之外的任何内容都会产生巨大的代码味道。是否有任何合法用途的 InternalsVisibleTo 属性来实现使用标准设计模式可能不可能/太麻烦
我们有一些方法是内部的,但人们可能需要在测试项目(且仅测试项目)中可见。为此,我们必须在类的顶部添加一堆 InternalsVisibleTo 语句。这是一个可以被许多其他项目使用并帮助进行测试和验证
我有一个强命名的 C# 程序集:Strong.Named.Assembly.dll。对于另一个程序集,它具有属性 InternalsVisibleTo 及其公钥:[assembly: Internal
我的代理生成器在为内部映射的 Nhibernate 类生成代理时遇到问题。我尝试在 assemblyinfo.cs 中使用 InternalsVisibleTo 将它们添加为可见,但它似乎不起作用。更
我有一个使用动态代码生成来创建代理类的项目。这个代理类使用了项目的内部类(这样就不会暴露实现细节),所以我使用 InternalsVisibleTo 和我动态生成的程序集的名称。直到最近,我的客户要求
我们有一个共享的基本接口(interface) public interface IOperation {...} 和许多(十个,很快 100+)实现 IOperation 的不同对象。 我们还对所有
使用 .Net Core 2.1,我的 AssemblyInfo.cs 看起来像这样: 使用 System.Runtime.CompilerServices; [assembly: Internals
我是一名优秀的程序员,十分优秀!