2010-11-20 2 views
0

Я пытаюсь выяснить, что делать здесь. У меня есть данные о клиентах в двух разных сторонних приложениях, которые мне нужно организовать в какой-то разумной структуре данных, прежде чем вносить изменения. В настоящее время у меня есть два подкласса клиента, по одному для каждого стороннего приложения.Соответствие двух объектов с подклассом в vb.NET

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 с их соответствующими клиентами2. У меня есть алгоритм, который имеет логику для указания экземпляра Customer1, а список Customer2s находит соответствующее совпадение.

Здесь я ищу дизайнерские идеи ... Клиенты - это не единственные данные, которые сопоставляются между двумя приложениями. У меня также есть два класса предметов, два класса оплаты, два класса счетов и т. Д. Каждый из этих классов имеет свой собственный алгоритм для сопоставления экземпляров ... Я хотел бы увеличить количество многоразового кода.

Вопросы:

  • Что такое хороший шаблон дизайна для соответствия части?

  • Какая структура данных хранится в паре сопряженного объекта?

Моя текущая мысль:

  • Эти подклассы реализовать какой-то Matchable интерфейс. Этот интерфейс содержит метод, который выглядит как:

    Public Function matchToApp (Коллекция Matchable) Как Matchable

  • Новый тип объекта с двумя свойствами, по одному для каждого приложения Matchable ...

Я уверен, что есть еще несколько творческих способов сделать это. Какие-либо предложения?

ответ

0

Вам не нужно изобретать для вас пользовательские интерфейсы. Чтобы сравнить 2 экземпляра, вы можете реализовать интерфейс IComparable (Of T), но я думаю, что в вашем случае, поскольку вы собираетесь сопоставлять экземпляры, вероятно, в контейнерах HashTable или Dictionaly, вам нужно переопределить методы GetHashCode() и Equals(). Пожалуйста, смотрите there

Смежные вопросы