Скрытие внутренних классов.Что мне не хватает? - PullRequest
0 голосов
/ 03 сентября 2010

Действительно надеюсь, что кто-то может направить меня в правильном направлении, так как у меня больше нет волос ...

Я разрабатываю простой SDK с использованием VB.NET в VS 2010 и у меня есть класс (OuterClass) который наследует другой класс (InnerClass).

Очевидно, что в InnerClass есть свойства и методы, доступные из OuterClass.

Как, черт возьми, я могу скрыть от своих потенциальных конечных пользователей, что InnerClass даже существует.Я не хочу скрывать внутренние компоненты InnerClass, просто тот факт, что InnerClass есть даже там ...

Независимо от того, что я пытаюсь сделать, это всегда видно в просмотрщике классов, отладчике или редакторе.

Я попробовал обычных соперников:

<DebuggerBrowsable(DebuggerBrowsableState.Never)> _

и

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

Пожалуйста, кто-нибудь может просто указать мне правильное направление.Я нашел несколько вещей, но все они связаны с C ++, и они просто сбивают с толку .... из меня.

Ответы [ 2 ]

1 голос
/ 03 сентября 2010

Если подклассы OuterClass из InnerClass, то InnerClass должен быть, по крайней мере, таким же видимым, как OuterClass. Если вы действительно хотите скрыть InnerClass, вам нужно переключиться на архитектуру «OuterClass использует InnerClass» вместо архитектуры «OuterClass - это InnerClass».

0 голосов
/ 03 сентября 2010

Эту проблему можно решить с помощью интерфейсов и заводского метода.

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
...