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

时间:2014-02-18 12:26:06

标签: c#

我遇到以下情况:

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

代码示例:

的Class1:

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

等级2: 我想用这样的东西:

Form1 try=Program.mainx;

我该怎么办?

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

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

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

[assembly:InternalsVisibleTo("NameOfOtherAssembly")]

如果你要检索mainx课程的Program属性,则需要在课堂上制作一个可见的(公开或内部)获取者:

internal static class Program
{
    private static Form mainx;

    ...

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

在第二堂课中,您应该可以通过致电GetForm()来获取表格:

Form1 try=Program.GetForm();