Шаблон проектирования с преобразованием единиц в C #

Мне нужно сделать преобразования между единицами, каждая единица имеет 2 части, ее имя и целое число, целая часть может быть как положительной, так и отрицательной. Мне нужно, чтобы мой класс Unit имел инъекцию зависимостей и был слабо связан. Например, если мне нужно что-то добавить в будущем, я не хочу менять другие классы, использующие этот класс.

В моем классе единиц измерения должен быть также метод Convert() для преобразования единиц измерения. Я просмотрел эти ссылки:

Но они кажутся слабо связанными.

Пожалуйста, дайте мне знать рекомендуемый шаблон проектирования для этой проблемы,


person Houshang.Karami    schedule 14.11.2012    source источник
comment
Ни одна из ваших ссылок не говорит о преобразовании единиц (преобразование типов совершенно другое). Какие зависимости будут у вашего класса Unit?   -  person D Stanley    schedule 14.11.2012
comment
Я ищу решение, которое мы реализуем с небольшими изменениями, мы можем расширить класс Unit без больших изменений на другие классы.   -  person Houshang.Karami    schedule 14.11.2012


Ответы (1)


Я бы создал настраиваемый атрибут для методов, который указывает единицу измерения, в которую и из которой может конвертироваться метод. Затем ваша функция конвертера может извлекать единицу из преобразуемых элементов и использовать отражение для поиска этих классов с помощью методов convert, которые конвертируют в / из этих единиц.

Вам действительно нужна основная единица измерения, которую вы используете для методов преобразования в / из. Например. выберите метрику, а затем все преобразования преобразуются в / из метрики во вторую единицу / из второй единицы. Затем, чтобы перейти от единицы A к единице B, вы конвертируете из A в метрическую систему, затем конвертируете в B из метрики, с преобразователями A и B, выбранными с использованием отражения.

Конечно, поскольку вы не предоставляете слишком много деталей в своем запросе, трудно сказать, что именно вы пытаетесь сделать, так что это «дизайн» безумного предположения. :)

person Tombala    schedule 14.11.2012
comment
Спасибо. Например, теперь у меня есть грамм и килограмм, но в будущем, возможно, мне понадобится фунт. Мне нужно преобразовать эти единицы вместе. У вас есть пример исходного кода? Я не люблю просматривать каждую единицу и определять новое преобразование. - person Houshang.Karami; 14.11.2012
comment
Кто-то поместил здесь шаблон разработки стратегии, а затем удалил его отсюда. Пожалуйста, дайте мне знать любой шаблон дизайна - person Houshang.Karami; 15.11.2012