在新方法中传递相同类的实例,并替换“ me”

时间:2019-01-17 07:09:03

标签: vb.net

对不起,很难解释我的问题。

我有一个类,并且在新方法中,我希望能够传递该类的一个实例-如果传递了一个实例,则应使用该实例(代替“ me”)。

一个例子...

Public Class DataConnection
    Implements IDisposable

    Public Property SqlCnn As SqlClient.SqlConnection
    Private _isNewInstance As Boolean

    Public Sub New()
        _isNewInstance = True
        SqlCnn = New SqlClient.SqlConnection
    End Sub


    Public Sub New(dc As DataConnection)
        _isNewInstance = False
        Me = dc ' <- this is not valid
    End Sub


#Region "IDisposable Support"
    Private disposedValue As Boolean

    Protected Overridable Sub Dispose(disposing As Boolean)
        If Not disposedValue Then
            If disposing Then
            End If

            If _isNewInstance Then
                SqlCnn.Close()
                SqlCnn.Dispose()
                SqlCnn = Nothing
            End If
            ' Do my clean up code
        End If
        disposedValue = True
    End Sub

    Public Sub Dispose() Implements IDisposable.Dispose
        Dispose(True)
    End Sub
#End Region

End Class

然后,我希望能够创建这样的新实例:

Dim dc As New DataConnection
Dim dc2 As New DataConnection(dc)

我需要它来支持“ using”语句,因为我的真实类实现了iDisposable,并且在没有传递实例的情况下需要做一件事,而在新方法中传递的是实例。所以我不能使用单例。

1 个答案:

答案 0 :(得分:1)

好的,从哪里开始?

我指的是当前对象的内部
例如表单,类或其他对象。 我是简写,不像C中的指针那样工作。

如果您确实要复制两个类的属性,则应该实现.Copy Sub或在类外部执行。

您尝试过

Public Function CopyAnObject(ByVal Source as Object) as Object
      CopyAnObject = Source
End Function

我很困惑这种情况的用例,但是似乎您正在尝试入侵不值得入侵的东西?

OP是否可以提供有关他/他想要实现的目标的更多信息?

如果您真的很想破解它,请将整个Class转换为IO.MemoryStream并从那里进行破解。