Соответствие двум подклассовым объектам в vb.NET - PullRequest
0 голосов
/ 20 ноября 2010

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

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 и список Customer2s найти соответствующее совпадение.

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

Вопросы:

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

  • В какой структуре данных я храню согласованную пару объектов?

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

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

    Открытая функция matchToApp (коллекция соответствует) как сопоставимая

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

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

Спасибо

1 Ответ

0 голосов
/ 24 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...