在某些情况下,您可能会遇到这样的情况:您正在使用的程序集提供了返回对象类型的方法,但该方法对象实际上属于不可访问的程序集中的内部类。这就提出了如何从您自己的程序集中访问该内部类的字段和方法的问题。
虽然修改供应商提供的程序集是不可能的,但有如果您希望允许特定程序集访问供应商程序集的内部成员以进行测试,这是一个解决方案。这可以使用 InternalsVisibleTo 属性来实现。
在项目的 AssemblyInfo.cs 文件中,添加以下行:
[assembly: InternalsVisibleTo("name of assembly here")]
此行授予指定程序集对内部成员的访问权限您的程序集,包括您尝试访问的内部类。
一旦您添加了 InternalsVisibleTo 属性并重建了程序集后,您可以从外部程序集访问内部类,如下所示:
public class MyClass { public void AccessTest() { Vendor vendor = new Vendor(); object value = vendor.Tag; // Cast the object to the internal class type InternalClass internalClass = (InternalClass)value; // Access the internal member string test = internalClass.test; } }
注意: 确保您授予访问权限的程序集非常重要to 仅用于测试目的,因为如果在生产中使用它可能会损害应用程序的安全性。
以上是如何在 C# 中从外部程序集访问内部类?的详细内容。更多信息请关注PHP中文网其他相关文章!