#.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 уже есть экземпляр по умолчанию, который вы можете использовать. Нет необходимости создавать отдельный экземпляр вообще. Однако я обычно не советую их использовать, потому что в дальнейшем это приведет к неэффективной практике.