min*_*und 4 vb.net vb.net-2010
如果我使用不正确的术语或听起来像一个完整的菜鸟,请原谅我.
在类库中调用sub时,我想传递的不是实例化的表单,而只是对表示表单的类的引用.然后我想从类库函数中实例化表单.这可能吗?
类似于以下内容:
在主要应用中:
ClassLib.MyClass.DisplayForm(GetType(Form1))
Run Code Online (Sandbox Code Playgroud)
然后,在类库中:
Public Class MyClass
Public Shared Sub DisplayForm(WhichFormClass As Type)
Dim MyForm as Form = WhichFormClass.CreateObject() 'Getting imaginitive
MyForm.ShowDialog()
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
希望我的例子传达了我想要完成的事情.如果你认为我的做法是假的,我会接受其他策略.
除了MotoSV的答案之外,这里还有一个只使用泛型的版本:
Public Shared Sub DisplayForm(Of T As {New, Form})()
Dim instance = New T()
instance.ShowDialog()
End Sub
Run Code Online (Sandbox Code Playgroud)
您可以使用如下:
DisplayForm(Of Form1)()
Run Code Online (Sandbox Code Playgroud)
使用这种方法,您可以确保传递的类型是一个表单,并且实例具有该ShowDialog()方法.没有必要的演员可能最终失败.但是,有必要在设计时知道类型参数以调用该方法.