2011-10-13 58 views
0

呃...这就是我想要做的。我有一个课程库项目进入我的解决方案。进入它我有一堂课。如何在命名空间中直接实例化类?

我希望该类能够在解决方案一开始就实例化。所以它可以从这样的解决方案中的其他项目访问:

Namespace.InstanceOfTheForm.Property 

有没有什么办法可以做到这一点?或接近那个?

任何想法?感谢您的帮助

编辑:我以前发布了一些方法,我发现,但没有实际工作......所以我仍然没有办法解决这个问题。

编辑2:我试图做的是获得我的解决方案的所有项目之间共享的对象的实例。再挖掘一点,我意识到我应该在进程之间实现某种内存共享吗?

回答

2

这听起来像你正在寻找一个静态类,或在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 
+0

你能深入解释一下这个概念吗?我应该如何使用这个共享类的aproach?谢谢 – saggio09

+0

@ saggio09更新的例子。 – LarsTech

+1

制作静态类的实际VB方法是'Module'。同样在这种情况下,除了演示目的之外,没有理由拥有共享构造函数,因为这些字段都可以被初始化。 –

2

如果这将是该类的唯一实例,并且您没有从其他任何继承,您可以使用模块来代替。

但是,从名称来看,它听起来像是你想要一个Form。在这种情况下,VB.Net中的所有表单都有一个可以使用的默认实例。根本不需要创建一个单独的实例。我通常建议不要使用这些,因为这会导致稍后的不良做法。

相关问题