Как создать экземпляр класса непосредственно в пространстве имен?

#.net #vb.net #visual-studio #visual-studio-2010

#.net #vb.net #visual-studio #visual-studio-2010

Вопрос:

Ну … это то, что я хочу сделать. У меня есть проект библиотеки классов в моем решении. В нем у меня есть класс.

Я хочу, чтобы этот класс был создан сразу после запуска решения. Таким образом, он может быть доступен из других проектов в решении, подобном этому:

 Namespace.InstanceOfTheForm.Property
  

Есть ли какой-нибудь способ сделать это? или что-то близкое к этому?

Есть идеи? Спасибо за помощь

РЕДАКТИРОВАТЬ: ранее я опубликовал какой-то способ, который я нашел, но на самом деле не работал… так что у меня все еще нет способа обойти это.

РЕДАКТИРОВАНИЕ 2: То, что я пытался сделать, это получить экземпляр объекта, общего для всех проектов моего решения. Покопавшись еще немного, я понял, что мне следует реализовать какое-то совместное использование памяти между процессами, верно?

Ответ №1:

Похоже, вы ищете статический класс или в vb.net термины, общий класс. Вы не создаете его напрямую, но Shared Sub New() вы можете использовать, который будет вызываться при первом обращении к вашему классу.

Обновить:

Я не уверен, что понимаю, что вы пытаетесь сделать, но вот пример общего класса:

 Namespace MyNameSpace
  Public Class Test
    Private Shared _TestName As String = String.Empty

    Shared Sub New()
      _TestName = "Instant Name"
    End Sub

    Shared Property TestName As String
      Get
        Return _TestName
      End Get
      Set(value As String)
        _TestName = value
      End Set
    End Property
 End Class

End Namespace
  

А затем вы просто вызываете его из любого места:

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  MessageBox.Show(MyNameSpace.Test.TestName)
  MyNameSpace.test.TestName = "Changed Name"
  MessageBox.Show(MyNameSpace.Test.TestName)
End Sub
  

Комментарии:

1. Можете ли вы подробно объяснить концепцию? Как я должен использовать этот подход к общему классу? Спасибо

2. Фактический способ VB создать статический класс Module . Также в этом случае нет причин (возможно, кроме демонстрационных целей) иметь общий конструктор, поскольку все поля могут быть инициализированы.

Ответ №2:

Если это будет единственный экземпляр класса, и вы не наследуете ни от чего другого, вы можете использовать вместо этого модуль.

Но, судя по названию, похоже, вам нужна форма. В этом случае все формы в VB.У Net уже есть экземпляр по умолчанию, который вы можете использовать. Нет необходимости создавать отдельный экземпляр вообще. Однако я обычно не советую их использовать, потому что в дальнейшем это приведет к неэффективной практике.