Реализация отраслевых ресурсов - PullRequest
1 голос
/ 02 мая 2011

У нас есть программа, которая используется в одной конкретной отрасли и содержит строки, специфичные для этой отрасли.Теперь у нас есть ситуация, когда его можно использовать в другой отрасли, и мы хотим настроить строки для этой отрасли, не дублируя нашу кодовую базу.

Пространство проблемы выглядит очень похоже на локализацию.Собираемся ли мы иметь отдельную сборку ресурсов для каждой отрасли?Если да, то когда мы выберем, какую сборку использовать, можем ли мы сделать это во время установки или это должно быть во время компиляции?Как мы синхронизируем отдельные сборки ресурсов, чтобы в каждом из них появлялись одинаковые ключи к сообщениям?

Как лучше всего это сделать?

Ответы [ 2 ]

1 голос
/ 02 мая 2011

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

В этом случае ваша проблема не просто похожа, она фактически идентична локализации.И в качестве такового вы можете использовать Спутниковые сборки .
Теперь вам решать, хотите ли вы упаковывать такие созданные приложения отдельно или распространять одно приложение с обоими проблемными пространствами.
Первое кажется болееРеалистичный сценарий для меня - вам нужно будет решить, какой файл .resx включить в время компиляции (т. е. во время подготовки проекта вы перезаписываете существующие ресурсы ресурсами проблемного пространства, а затем приступаете к компиляции, что должно датьу вас разные варианты применения; я бы также изменил их имена в таком случае).
В последнем случае вам потребуется вручную создать экземпляр ResourceManager во время выполнения для чтения из допустимой спутниковой сборки - это может быть основано на каком-то файле конфигурации.Это означает больше работы (вам нужно будет на самом деле изменить свой код), и вы в конечном итоге будете распространять оба варианта приложения одновременно, то есть вы не будете контролировать то, как ваши клиенты будут его использовать.С точки зрения бизнеса это может быть немного опасно.


РЕДАКТИРОВАТЬ (Примечание для себя: внимательно прочитайте весь вопрос)

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

0 голосов
/ 02 мая 2011

Я бы порекомендовал иметь файл свойств с парами ключ-значение. Там, где у вас есть отраслевые строки, замените их вызовами в файл свойств. Очевидно, вы бы кэшировали эти строки в каком-то контейнере. Я не знаю, контейнер C # - Java будет использовать java.util.Properties.

aerospace.props:
INDUSTRY_NAME=aerospace
INDUSTRY_START_YEAR=1903


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