2013-08-28 44 views
0

是否有可能將兩個對象合併在一起?例如:是否有可能在vb.net中合併對象?

如果你有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

我寧願創建另一個包含兩個對象的公共或所有可能屬性的類。 – Alex

+0

好吧,你幾乎不得不創建另一個類來做到這一點。最重要的是,你需要重載「+」運算符,或者簡單地創建一個全新的合併函數。 –

+0

似乎你需要*合併*對象已經出現在試圖解決一些不同的問題。如果您發佈原始問題並讓我們看看如何以* Object Oriented *方式解決問題,那將會更好。獲得合併這兩個對象的方法將不能解決你原來的問題,它會使情況變得更糟。我會盡量避免這種刻意的努力,直到我確信沒有好的出路。 – inquisitive

回答

5

有這些對象合併成一個新的對象對這種操作沒有固有的語言支持。它需要一定程度的對象特定代碼才能使其工作。如果您真的想使用+進行合併,您可以在OptionObject上定義一個重載運算符,並在那裏實現合併邏輯。

Class OptionObject 
    Public Shared Operator +(left as OptionObject, right as OptionObject) As OptionObject 
    ' Insert merge logic here 
    End Operator 
End Class 
0

爲了做到這一點,您必須重載「+」運算符或創建一個全新的函數。該函數將不得不決定如何合併對象(決定哪些屬性值用於新對象,等等)。

您也可以爲新的合併對象創建一個全新的類,但是您仍然必須重載「+」運算符或創建自己的合併函數。

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 
相關問題