0

当我调用来自其他程序集的函数并且其可访问性级别为“内部”时,智能感知应该找出语法错误,例如“XXX 由于其保护级别而无法访问”。但事实并非如此。毫无疑问,编译失败了。

但是,在我将函数的可访问性级别更改为其他级别(例如“私有”)后,它会发现语法错误。

是什么让“内部”如此不同,为什么?或者它只是视觉工作室中的一个错误?

示例代码:

static void Main(string[] args)
{
    var t= new AssemblyBCode();
    t.test();
}

另一个程序集中的代码(引用的解决方案):

public class AssemblyBCode
{
    internal void test() { }
}
4

1 回答 1

1

当然,internal我们的想法是对其他程序集隐藏事物,同时提供对“原始”程序集的访问权,但是有一个程序集属性调用InternalsVisibleToAttribute,您可以使用它明确指示框架AssemblyA 可以访问internalAssemblyB 的s。

当然*) 对于 IDE/编译器,它应该非常清楚*) 如果您当前的程序集有或没有访问权限。这可能是一些小错误或签名密钥的一些问题..如果我自己没有看到它很难说,不幸的是我没有vs2012 ..

编辑:*)请参阅 HansPassant 评论:问题在于,直到在构建作业结束时对程序集进行签名之后才清楚,这可能还没有正确完成。

于 2013-11-08T10:59:05.310 回答