2015-07-17 2 views
2

Я работаю над приложением WPF Prism и имею две ситуации, когда было бы предпочтительнее иметь строки, доступные в системе.Как обрабатывать строки, доступные для широкого доступа?

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

Должен ли я создавать эти константы, несмотря на возможность изменения строк? Может быть, сделать их только для чтения предпочтительнее? Спасибо за ваш вклад!

ответ

3

Я бы определенно использовал класс хранения в общей сборке для этого. Что-то вроде этого:

public static class Claims 
{ 
    public static readonly String View = "http://schemas.mycompany.com/claims/view"; 
    public static readonly String Edit = "http://schemas.mycompany.com/claims/edit"; 
    public static readonly String Upvote = "http://schemas.mycompany.com/claims/upvote"; 
} 

Microsoft использует аналогичный approach
Это оставляет только один дилемма: Const против ЧТЕНИЯ. Я бы рекомендовал использовать readonly в вашем случае, потому что вы сказали, что есть возможность изменения. Константу следует использовать только в том случае, если данные на самом деле постоянны, потому что константы не ссылаются, а копируются в каждую сборку ссылок. Например. если вы определяете константы в сборке A и используете их в сборке B, то, если вы измените их в A, вам придется перекомпилировать B, иначе B сохранит старую версию этих констант.

+0

Спасибо! Я ответил на ваш ответ как ответ, так как вы специально обратились к вопросу о const vs readonly. –

3

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

-1

Я смущен ответами. Все строки пользовательского интерфейса всегда должны находиться в таблице строк. Для этого это и есть. Его доступная система в целом. Кроме того, вы можете локализовать.

1

Общий класс хранения сборки может быть достаточно простым для ваших нужд, но вы можете захотеть использовать файл .resx. Это, по сути, файл формата XML, в котором вы жестко кодируете свои строки, а затем можете ссылаться внутри своего кода. MSDN Documentation

Вот некоторые веские причины, чтобы использовать их:

  • Файлы ресурсов дают вам простой способ локализации/интернационализации приложений .net, автоматически определить, какой язык Resx файл для использования на основе пользователя локали. Чтобы добавить другие языки, просто добавьте еще один переведенный файл ресурсов.

  • Файлы ресурсов предоставляют вам центральное место для хранения ваших строк, файлов и сценариев и ссылаются на них строго типизированным образом (так что компиляция будет нарушена, если вы ссылаетесь на них неправильно).

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

What are the benefits of resource resx files?

Вы можете прочитать из Resx, как так:

var <Variable Name> = Namespace.Properties.Resources.<Resource Name> 
Смежные вопросы