Show/Hide Toolbars

XSharp

 

指定 .netmodule 可以访问其非公共类型的程序集。

语法

-moduleassemblyname:assembly_name  

参数

assembly_name.netmodule 可以访问其非公共类型的程序集名称。

备注

 

在生成 .netmodule 时,如果以下条件为真,则应使用 -moduleassemblyname:

 

.netmodule 需要访问现有程序集中的非公共类型。

您知道 .netmodule 将被编译到的程序集名称。

现有程序集已授予友元程序集访问 .netmodule 的权限。

 

有关生成 .netmodule 的更多信息,请参阅 -target:module.

 

有关友元程序集的更多信息,请参阅友元程序集。

 

此选项在开发环境中不可用;只有在命令行编译时才可用。

 

该编译器选项在 Visual Studio 中不可用,也不能通过编程更改。

示例

此示例创建了一个具有私有类型的程序集,并允许友元程序集访问名为 csman_an_assembly 的程序集。

-/ moduleassemblyname_1.prg  
-/ compile with: -target:library  
using System;  
using System.Runtime.CompilerServices;  
 
 [assembly:InternalsVisibleTo ("csman_an_assembly")]  
 
 class An_Internal_Class  
 
{  
   public void Test()  
   {  
 
       Console.WriteLine("An_Internal_Class.Test called");  
   }  
}  
 

示例

本示例将生成一个 .netmodule,该模块将访问程序集 moduleassemblyname_1.dll 中的非公共类型。我们知道该 .netmodule 将被内置到名为 csman_an_assembly 的程序集中,因此可以指定 -moduleassemblyname,允许 .netmodule 访问已授予 csman_an_assembly 友元程序集访问权限的程序集中的非公共类型。

-/ moduleassemblyname_2.prg  
-/ compile with: -moduleassemblyname:csman_an_assembly -target:module -reference:moduleassemblyname_1.dll  
class B {  
   public void Test() {  
       An_Internal_Class x = new An_Internal_Class();  
       x.Test();  
   }  
}  

示例

 

此代码示例将引用先前生成的程序集和 .netmodule 来生成程序集 csman_an_assembly。

-/ csman_an_assembly.prg  
-/ compile with: -addmodule:moduleassemblyname_2.netmodule -reference:moduleassemblyname_1.dll  
class A {  
   public static void Main() {  
       B bb = new B();  
       bb.Test();  
   }  
}