2009-02-28 73 views
1

在VB.NET中,我正在嘗試與web服務(無法更改)進行交談來創建和更新客戶數據。 CreateCustomer服務需要一個ConsumerPerson類型的對象,而ChangeCustomer服務需要一個類型爲ChangeData的對象。我如何將兩種相似類型視爲一種?

這兩個對象的屬性完全相同,所以我認爲只用一個函數設置屬性是明智的。

但是,我無法找到一種方法來告訴我的函數,我想要填充ConsumerPerson或ChangeCustomer對象。

如何使這項工作沒有遲到的約束問題?

回答

1

一個界面聽起來像是您最好的方法。這是一個簡短的代碼片段。我選擇了一個名稱爲「Name」的字符串類型的簡單屬性。應該很容易使用班級上的實際屬性進行修改。

Public Interface ICustomerData 
    ReadOnly Property Name As String 
End Interface 

Public Class ConsumerPerson 
    Implements ICustomerData 

    Public ReadOnly Property Name As String Implements ICustomerData.Name 
    Get 
     return _name 
    End Get 
    End Property 
End Class 

Public Class ChangeData 
    Implements ICustomerData 

    Public ReadOnly Property Name As String Implements ICustomerData.Name 
    Get 
     return _name 
    End Get 
    End Property 
End Class 
+0

理論上聽起來不錯。但看着代碼,我意識到我遺漏了一些關鍵細節:我也無法更改ConsumerPerson或ChangeData類。 – sebastiaan 2009-02-28 16:16:40

1

使用接口!

聲明一個接口IFoo,並在您的子類ConsumerPerson和ChangeCustomer中實現其成員。這正是接口的用途。

1

您可以創建兩個類都實現的接口。

0

是否有可能超載你的函數與第二種數據類型?

0

如果您不能更改您的對象,但它們共享相同的字段名稱,則可以將xml序列化爲數據並反序列化爲其他類。 - 你應該強烈考慮這個性能影響;然而,它會給你你要求的功能。

相關問題