在VB.NET中,我正在尝试与web服务(无法更改)进行交谈来创建和更新客户数据。 CreateCustomer服务需要一个ConsumerPerson类型的对象,而ChangeCustomer服务需要一个类型为ChangeData的对象。我如何将两种相似类型视为一种?
这两个对象的属性完全相同,所以我认为只用一个函数设置属性是明智的。
但是,我无法找到一种方法来告诉我的函数,我想要填充ConsumerPerson或ChangeCustomer对象。
如何使这项工作没有迟到的约束问题?
在VB.NET中,我正在尝试与web服务(无法更改)进行交谈来创建和更新客户数据。 CreateCustomer服务需要一个ConsumerPerson类型的对象,而ChangeCustomer服务需要一个类型为ChangeData的对象。我如何将两种相似类型视为一种?
这两个对象的属性完全相同,所以我认为只用一个函数设置属性是明智的。
但是,我无法找到一种方法来告诉我的函数,我想要填充ConsumerPerson或ChangeCustomer对象。
如何使这项工作没有迟到的约束问题?
一个界面听起来像是您最好的方法。这是一个简短的代码片段。我选择了一个名称为“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
使用接口!
声明一个接口IFoo,并在您的子类ConsumerPerson和ChangeCustomer中实现其成员。这正是接口的用途。
您可以创建两个类都实现的接口。
是否有可能超载你的函数与第二种数据类型?
如果您不能更改您的对象,但它们共享相同的字段名称,则可以将xml序列化为数据并反序列化为其他类。 - 你应该强烈考虑这个性能影响;然而,它会给你你要求的功能。
理论上听起来不错。但看着代码,我意识到我遗漏了一些关键细节:我也无法更改ConsumerPerson或ChangeData类。 – sebastiaan 2009-02-28 16:16:40