在vb.NET中匹配两个子类对象

在vb.NET中匹配两个子类对象,vb.net,design-patterns,Vb.net,Design Patterns,我在想怎么办。我有两个不同的第三方应用程序中的客户数据,在进行更改之前,我需要将这些数据组织成一些合理的数据结构。我目前有两个子类的客户,每个第三方应用程序一个 Public MustInherit Class Customer Public ID as String Public Name as String Public.... more shared members here End Class Public Class Application1Custom

我在想怎么办。我有两个不同的第三方应用程序中的客户数据,在进行更改之前,我需要将这些数据组织成一些合理的数据结构。我目前有两个子类的客户,每个第三方应用程序一个

Public MustInherit Class Customer
     Public ID as String
     Public Name as String
     Public.... more shared members here
End Class

Public Class Application1Customer
     Inherits Customer

     Public Application1SpecificData....
End Class

Public Class Application2Customer
     Inherits Customer

     Public Application2SpeceficData.....
End Class
我需要将Customer1的所有实例映射到它们各自的Customer2。我有一个算法,它的逻辑是给定一个Customer1实例和一个Customer2列表来找到合适的匹配项

这里是我寻找设计创意的地方。。。客户并不是两个应用程序之间唯一匹配的数据。我还拥有两个Item类、两个Payment类、两个Invoice类等。每个类都有自己的算法来匹配实例……我希望最大限度地增加可重用代码的数量

问题:

  • 什么是匹配部分的好设计模式

  • 我应该在什么数据结构中存储匹配的对象对

我目前的想法是:

  • 这些子类实现某种可匹配的接口。此接口包含一个如下所示的方法:

    公共函数matchToApp(集合可匹配)作为可匹配

  • 一个新的对象类型,具有两个属性,每个应用程序的可匹配属性一个

我相信有一些更具创造性的方法可以做到这一点。有什么建议吗


谢谢

您不需要为它发明自定义接口。要比较两个实例,您可以实现system IComparable(Of T)接口,但我认为在您的例子中,因为您要映射实例,可能是在HashTable或字典容器中,所以需要使用GetHashCode()和Equals()方法。请看