2009-01-27 41 views
1

假设程序集Assembly1.dll包含3个类:C1,C2,C3类。如何只显示程序集中的一个特定类?

我想只向外界展示C1级。 C2和C3类不可访问。如何实现这个目标?

注意:将类C2和C3私有化不是一种选择,因为这会使得它们在程序集内部无法访问。

回答

15

制作类C2和C3的内部,如:

internal class C2 
{ 
//... 
} 
5

“内部”关键字指定一个类是仅仅存在于自己组装访问。也许你应该用C2和C3来标记它。

1

您可以使用“内部”的访问,而不是“私人”,所以你的类的可见性将仅限于装配水平,而不是外界。

7

正如其他人所说,您使用internal知名度。一对夫妇更多的积分,但:

  • 对于非嵌套类型,内部实际上是在C#中的默认值,这样就不会已经指定它。是否明确指定默认访问权限是个人品味的问题。 (我目前在围栏上,倾向于明确表示)。

  • 只有嵌套类型可以是私人的 - 同样,这是嵌套类型的默认可见性。

+1

被明确表示是好的...... – 2009-01-27 13:21:04

1

internal是要走的路。如果要从不同的装配体测试C2和C3类,可以通过在装配体上设置InternalsVisibleTo属性来完成此操作。

0

如果您不希望在您的程序集外将类暴露给COM和.NET,那么internal关键字可以正常工作。

但是,如果您希望更好地控制您向COM公开的内容,请将您的类保留为公共状态,取消选中项目属性(更改AssemblyInfo.cs下的“Make Assembly COM Visible”)和然后向要暴露给COM的类添加一个属性。类似这样的:

[Guid("12338758-70B4-40B7-75FA-50300015DAC9")] 
[ClassInterface(ClassInterfaceType.AutoDual)] 
[ComVisible(true)] 
public class MyClassToExpose 
相关问题