У нас есть приложение, которое будет динамически загружать некоторые компоненты из отдельных библиотек. Эти компоненты имеют фиксированное имя, но мы хотим, чтобы локализованные имена отображались пользователю, поэтому имена должны быть локализованы.
Тот факт, что имя должно быть локализовано, не относится к самому компоненту, поэтому мы не хотим загрязнять модель компонента таким свойством, как DisplayName или LocalisedName, и иметь ресурсы для компонента. жить в dll для компонента. Но так как эти компоненты являются подключаемыми, у нас не может быть ресурса для отображаемого имени в приложении, так как тогда, когда мы добавляли новые компоненты, ресурсы для приложения должны были бы обновляться, что лишает смысла делать компоненты подключаемыми ,
Есть ли общее решение этой проблемы? Возможные решения, которые мы могли видеть, были:
1 \ Имейте свойство с именем display name, которое код GUI вызывает для отображения имен. Это работает нормально, с ресурсами, существующими в той же dll, что и (или dll спутника) сборки, содержащей компонент. Но это, кажется, загрязняет модель информацией, о которой не должен заботиться компонент.
2 \ Приложение с графическим интерфейсом ищет ресурсы для названного компонента из своих файлов ресурсов. Это терпит неудачу, потому что приложение должно обновлять свои ресурсы при добавлении новых сборок, содержащих новые динамически загружаемые компоненты.
3 \ Найдите приложение в ресурсах сборки, из которой получен компонент, для поиска локализованного имени компонента. Это кажется хорошим, поскольку локализованное имя существует в сборке для компонента, поэтому оно распространяется вместе с ним, но приложение с уровнем представления запускает поиск локализованной строки из компонентов dll, поэтому компоненту не нужно ничего знать о локализация и так ее модель не загрязнена.
Возможен ли вариант 3? Есть ли другой вариант, который мы не рассмотрели?
веселит ...