下一个代码适用于我,但我知道它是否是最好的方法。 这样我需要写:_Button1 = Button1和_MyVar = MyVar 这样做的方式似乎重复而且长时间参数 传递给类构造函数的还有很多。
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim myVar As String = "My children"
Dim NewClass1 As New Class1(Button1, myVar)
'... do more ...
End Sub
End Class
Public Class Class1
Private WithEvents _Button1 As Button
Private _MyVar As String
Public Sub New(ByVal Button1 As Button, ByVal MyVar As String)
_Button1 = Button1
_MyVar = MyVar
'... do more ...
End Sub
Private Sub _Button1_Click(sender As Object, e As EventArgs) _
Handles _Button1.Click
MsgBox("Button1 clicked and I love: " & _MyVar)
End Sub
End Class
答案 0 :(得分:0)
_Button1 = Button1和_MyVar = MyVar当传递给类构造函数的参数多得多时,这种做法似乎重复且很长。
这实际上是依赖注入,通常是一件好事。如果你最终得到太多的构造函数参数,那么它应该是你的类做了太多事情并且违反了SOLID原则的线索。
但是,您的Class1
不应该依赖Form1
,它应该是相反的。您的代码可以简单得多:
Public Class Class1
Friend Sub DoSomething(ByVal MyVar As String)
MsgBox(MyVar)
End Sub
End Class
Public Class Form1
Public Property class1() As Class1
Sub New()
InitializeComponent()
Me.class1 = New Class1()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
class1.DoSomething("blah, blah")
End Sub
End Class
虽然我不是在这里展示依赖注入(为简单起见),但你可以看到Class1
只知道它可以做一些工作,它根本不知道Form。
您可以订阅Class1
中的按钮点击事件,而不是将按钮传递给它。它会更干净,但设计仍然不好。