.NET - VB - OOP - 部分类 - 如何创建部分构造函数

时间:2014-08-06 04:27:08

标签: asp.net vb.net oop constructor partial-classes

我在文件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,但我的问题是:

  1. 我无法编辑文件MainFile.vb
  2. 我无法创建另一个构造函数
  3. 我所能做的就是 - 因为MyAwesomeClassPartial Class;我可以创建其他文件,例如ExtendedFile.vb并写下我的代码行
  4. 所以我试图这样做.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 - 有没有解决方法或解决方案?任何帮助将不胜感激。

1 个答案:

答案 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

第一种解决方案似乎更合理。