繁体   English   中英

如何从另一个程序集访问内部静态类?

[英]How can I access to an internal static class from another assembly?

我有以下情况:

1)我有一个内部静态类,我的软件初始化一个表单2)我想得到这个表单的实例用于其他原因。

代码示例:

1类:

 namespace x {
       internal static class Program {
         private static Form mainx;
         private static void Main() {
           .....
           .....
           mainx=new Form(.....);
           Application.run(mainx);
         }
       }
    }

Class2:我想用这样的东西:

Form1 try=Program.mainx;

我该怎么做?

如果两个程序集都已签名,则可以使用InternalsVisibleToAttribute将程序集的内部成员公开给另一个程序集。

我经常使用它来启用内部类的单元测试,而不必将它们公开。

您可以使用内部类将程序集标记为另一个程序集上的友元程序集,其属性为InternalsVisibleTo 您将在MSDN上找到有关此内容的更多信息。

您需要将此行添加到AssemblyInfo类(在“ Properties文件夹中),即在最后一行。 必须在已声明内部类的项目中添加此项。

[assembly:InternalsVisibleTo("NameOfOtherAssembly")]

如果您要检索Program类的mainx属性,则需要在类上创建一个可见的(公共或内部)getter:

internal static class Program
{
    private static Form mainx;

    ...

    public static Form GetForm()
    {
        return mainx;
    }
}

在第二堂课中,您应该可以通过调用GetForm()来获取表单:

Form1 try=Program.GetForm();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM