我遇到以下情况:
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;
我该怎么办?
答案 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();