我在文件Partial Class
中有一个MainFile.vb
,其构造函数如下:
Partial Class MyAwesomeClass
' The constructor - Name it MainConstructor
Public Sub New(Dim x As Integer)
' Some awesome code here
Line1_of_code()
Line2_of_code()
Line3_of_code()
End Sub
End Class
现在我想在同一个构造函数中添加更多代码行,即MainConstructor
,但我的问题是:
MainFile.vb
MyAwesomeClass
是Partial Class
;我可以创建其他文件,例如ExtendedFile.vb
并写下我的代码行所以我试图这样做.NET
中不允许这样做:
Partial Class MyAwesomeClass
' The extended constructor - Name it ExtConstructor
Public Sub New(Dim x As Integer) ' Boom!!!! Error: Duplicate constructor with same kind of arguments
' my extended awesome code here
Line4_of_code()
Line5_of_code()
Line6_of_code()
End Sub
End Class
最终我想做一些事情 - 当我创建object
MyAwesomeClass
时;它应该执行Line1_of_code()
到Line6_of_code()
。即。
Dim objAwesome As New MyAwesomeClass(5) ' Any Integer will do
应该为objAwesome
执行以下所有行(并且也以相同的顺序执行)
Line1_of_code()
Line2_of_code()
Line3_of_code()
Line4_of_code()
Line5_of_code()
Line6_of_code()
我使用的是.NET Fx 4.0 - 有没有解决方法或解决方案?任何帮助将不胜感激。
答案 0 :(得分:-1)
您可以将部分类视为单独文件中的代码。然后编译器将它合并到一个类文件中。
一种解决方案是创建新的继承类并覆盖构造函数。
第二个解决方案是制作共享(静态)方法构建器:
Partial Class MyAwesomeClass
Public Shared Function Create() As MyAwesomeClass
' your code goes here
' calling base instance creation
第三种解决方案是为第二个构造函数创建不同的签名,因为在类中不能有两个具有相同名称和签名的方法,例如。
Partial Class MyAwesomeClass
Public Sub New(Dim x As Integer, Dim buildWithNewAwesomeImplementation as Boolean) '
Me.New(x) ' calling base constructor
If(buildWithNewAwesomeImplementation)
Line4_of_code()
Line5_of_code()
Line6_of_code()
End if
End Sub
End Class
第一种解决方案似乎更合理。