vb.net - 在新方法中传递同一类的实例并替换“我”
问题描述
我很抱歉,但很难解释我的问题。
我有一个类,在新方法中,我希望能够传递该类的一个实例 - 如果传递了一个实例,则应该使用这个实例(替换“我”)。
一个例子...
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 并且如果没有传递实例并且另一件事是在新方法中传递了一个实例,我需要做一件事。所以我不能使用单例。
解决方案
好的,从哪里开始?
Me 指的是当前对象的内部。
例如表单、类或其他对象。Me 是速记,不像 C 中的指针那样工作。
如果你真的想复制两个类的属性,你应该实现一个 .Copy Sub 或者在类之外进行。
你有没有尝试过
Public Function CopyAnObject(ByVal Source as Object) as Object
CopyAnObject = Source
End Function
我很困惑这可能是什么用例,但似乎你正在尝试破解一些不值得破解的东西?
OP 能否提供更多关于他/她想要达到的目标的信息?
如果您真的很想破解它,请将整个 Class 转换为 IO.MemoryStream 并从那里破解它。
推荐阅读
- java - 模拟匿名内部类
- python - pd.Series.apply 关键字参数是一个 pd.series
- excel - VBScript 调用 VBA 宏来构建数据透视表
- codeigniter - 如何使用 codeigniter 将主页重定向到不同的 php 页面?
- search - MS Graph Search 自定义连接器未同步
- .net-core - Nuget.config 凭据是否被缓存?在哪里?
- raptor - 是否可以在 raptor 中比较字符串?
- c++ - 执行函数时导致崩溃的变量
- python-3.x - 如何在 Google Drive 中搜索 TensorFlow 文件?
- python-3.x - 如何处理 Selenium Python 中出现的弹出窗口