Преобразование типов без введения зависимости? - PullRequest
0 голосов
/ 15 марта 2011

У меня есть 2 типа:

  • MyImmutableType
  • MyDBType

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

Моя проблема в том, что я не хочу вводить зависимость MYDBType в моей библиотеке CommonTypes. Как я могу сделать это? Возможно, с помощью методов извлечения? Не нужно, чтобы моя библиотека CommonTypes знала о моей библиотеке MyDBType.

Я могу использовать методы расширения, но я не уверен, как выполнять приведение операторов расширения.

Причина: Причина, по которой я не хочу иметь зависимость, заключается в том, что у меня есть архитектура клиент / сервер. Я не хочу распространять свой класс БД среди моих клиентов. Но я хочу, чтобы мой код на стороне сервера легко использовал приведение.

Ответы [ 3 ]

1 голос
/ 15 марта 2011

Вы не можете определить неявный или явный оператор нигде, кроме как в одном из двух классов.

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

Сложная часть будет, если вы хотите полагаться на определенные детали одного класса, которые являются частными и, следовательно, должны обрабатываться внутри самого класса.Но если это так, то вам действительно не повезет, если вы попытаетесь сделать это без введения зависимости, если только вы не захотите прибегнуть к рефлексии (в некоторых случаях допустимая альтернатива).

1 голос
/ 15 марта 2011

Как вы говорите, методы расширений - действительно хороший подход для этого. Вы можете разделить эти методы в другом классе или даже в пространстве имен.

0 голосов
/ 15 марта 2011

Я не думаю, что вы действительно можете уйти от зависимости здесь.Вы можете переместить преобразование в класс фабрики / утилиты, чтобы типы не знали друг о друге.Только служебный класс должен иметь знание обоих.

...