隐藏内部阶级。我错过了什么?

时间:2010-09-02 22:53:23

标签: vb.net class inheritance private

真的希望有人可以指出我正确的方向,因为我已经没有头发了......

我正在VS 2010中使用VB.NET开发一个简单的SDK,我有一个继承另一个类(OuterClass)的类(InnerClass)。

InnerClass中有明显的属性和方法可以从OuterClass访问。

如何隐藏InnerClass甚至存在的潜在最终用户。我不想隐藏内部类内部因为InnerClass甚至存在......

无论我尝试什么,它总是在类查看器,调试器或编辑器中可见。

我尝试过常见的竞争者:

<DebuggerBrowsable(DebuggerBrowsableState.Never)> _

<ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> _

请有人甚至可以指出我正确的方向。我发现了一些东西,但它们都与C ++有关,它们只会让我感到困惑。

2 个答案:

答案 0 :(得分:1)

如果来自InnerClass的OuterClass子类,则InnerClass必须至少与OuterClass一样可见。如果你真的想要隐藏InnerClass,那么你需要切换到“OuterClass使用InnerClass”架构而不是“OuterClass是一个InnerClass”架构。

答案 1 :(得分:0)

您可以使用接口和工厂方法解决此问题。

Public Interface IOuterClass

End Interface


Friend MustOverride InnerClass

End Class


Friend Class OuterClass
  Implements IOuterClass
  Inherits InnerClass

End Class


Public Class OuterClassFactory

  Public Shared Function Create() as IOuterClass
    Return New OuterClass()
  End Function

End Class
相关问题