首页 > 解决方案 > 如何从模块或类 Web 文件访问 Friend 方法

问题描述

我正在开发一个 VB.NET ASP.NET 网站。我希望能够限制 Friend 访问我的所有页面中使用的一种方法。

当我这样做时,无论是在模块中还是在 VB 类 Web 文件中(在我的 App_Code 项目文件夹中),我都看不到它。我得到错误 [方法] 在这种情况下无法访问,因为它是“朋友”。

从我的所有研究来看,这是因为 bin 被安排成许多不同的 DLL - 一对用于 App_Web_####,一个用于 App_Code。

我尝试将此文件移出 App_Code 文件夹并将其放在其余文件的级别(与页面相同的级别),但我无法从那里引用它。

我考虑在模块/类的顶部指定以下内容,但由于 App_Web_#### 似乎不确定,我将无法可靠地使用某些东西。

Imports System.Runtime.CompilerServices
<Assembly: InternalsVisibleTo("AssemblyB")>

编辑:我正在尝试在 Visual Studio 15 中执行此操作

必须有一种方法可以从模块或类文件中引用 Friend 方法。还有其他建议吗?

标签: asp.netvb.netaccess-modifiers

解决方案


InternalsVisibleTo必须位于包含Friend要公开的方法的程序集中,并且它必须命名要公开这些成员的程序集。

话虽如此,InternalsVisibleTo不能仅限于单个成员:这是全有或全无的事情。

对您来说发生的事情是您的代码被拆分为两个不同的程序集,而您不知道第二个程序集的名称;它是在编译时生成的。如果该名称在构建之间保持不变,您可以通过在运行时检查程序集(通过对象浏览器)来确定它。一旦知道程序集名称,就可以使用它来正确公开内部成员。


推荐阅读