首页 > 解决方案 > 在新方法中传递同一类的实例并替换“我”

问题描述

我很抱歉,但很难解释我的问题。

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

一个例子...

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)

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

标签: vb.net

解决方案


好的,从哪里开始?

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

如果你真的想复制两个类的属性,你应该实现一个 .Copy Sub 或者在类之外进行。

你有没有尝试过

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

我很困惑这可能是什么用例,但似乎你正在尝试破解一些不值得破解的东西?

OP 能否提供更多关于他/她想要达到的目标的信息?

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


推荐阅读