是否可以将两个对象合并在一起?例如:
如果您有2个对象
Dim returnOptionObject1 As OptionObject
returnOptionObject1 = New OptionObject
Dim returnOptionObject2 As OptionObject
returnOptionObject2 = New OptionObject
然后设置他们的值
returnOptionObject1.EntityID = OptionObject.EntityID
returnOptionObject1.OptionId = OptionObject.OptionId
returnOptionObject2.SystemCode = SystemCode
returnOptionObject2.Facility = OptionObject.Facility
你能否以某种方式将这些对象组合成一个新对象,如
Dim newObject As OptionObject = returnOptionObject1 + returnOptionObject1
答案 0 :(得分:5)
此类操作没有固有的语言支持。它需要某种级别的对象特定代码才能使其工作。如果您真的想使用+
进行合并,可以在OptionObject
上定义重载运算符并在那里实现合并逻辑。
Class OptionObject
Public Shared Operator +(left as OptionObject, right as OptionObject) As OptionObject
' Insert merge logic here
End Operator
End Class
答案 1 :(得分:0)
为了做到这一点,你必须重载“+”运算符,或者创建一个全新的函数。该函数必须指示如何合并对象(确定用于新对象的属性值等)。
您还可以为新的合并对象创建一个全新的类,但您仍然需要重载“+”运算符或创建自己的合并函数。
答案 2 :(得分:0)
您还可以重载New构造函数并将每个对象传递给它。过滤掉每个对象未使用的属性的唯一默认值,并设置新对象的属性
Dim returnOptionObject1 As New OptionObject
Dim returnOptionObject2 As New OptionObject
returnOptionObject1.EntityID = 1
returnOptionObject1.OptionId = 2
returnOptionObject2.SystemCode = 3
returnOptionObject2.Facility = 4
Dim newObject As New OptionObject(returnOptionObject1, returnOptionObject2)
Class OptionObject
Property EntityID As Integer = 999
Property OptionId As Integer = 999
Property SystemCode As Integer = 999
Property Facility As Integer = 999
Public Sub New()
End Sub
Public Sub New(obj1 As OptionObject, obj2 As OptionObject)
If obj1.EntityID <> 999 Then
Me.EntityID = obj1.EntityID
End If
If obj1.OptionId <> 999 Then
Me.OptionId = obj1.OptionId
End If
If obj1.SystemCode <> 999 Then
Me.SystemCode = obj1.SystemCode
End If
If obj1.Facility <> 999 Then
Me.Facility = obj1.Facility
End If
If obj2.EntityID <> 999 Then
Me.EntityID = obj2.EntityID
End If
If obj2.OptionId <> 999 Then
Me.OptionId = obj2.OptionId
End If
If obj2.SystemCode <> 999 Then
Me.SystemCode = obj2.SystemCode
End If
If obj2.Facility <> 999 Then
Me.Facility = obj2.Facility
End If
End Sub
End Class