Можно ли использовать такой класс (конкретный дизайн/ориентир)? Я использую шаблон MVVM.
public static class Pages
{
public const string Home = "Home.xaml";
public const string View2 = "View2.xaml";
/* a few more... */
}
Можно ли использовать такой класс (конкретный дизайн/ориентир)? Я использую шаблон MVVM.
public static class Pages
{
public const string Home = "Home.xaml";
public const string View2 = "View2.xaml";
/* a few more... */
}
Существуют значительные различия между const
и public static readonly
, и вы должны подумать над тем, что использовать с осторожностью:
(Под "клиентом" здесь я имею в виду "код в другой сборке, относящийся к элементу".
const
. С помощью public static readonly
они будут видеть обновленное значение. Если вы все равно перекомпилируете всех клиентов, это не проблема.const
- это константа времени компиляции, что означает, что она может использоваться в:
Если вы с удовольствием перекомпилируете всех своих клиентов, если вы когда-либо измените значение, преимущества второй точки маркера указывают на использование const
.
Конечно, мне интересно, действительно ли Pages
должен быть общедоступным... это похоже на то, что может быть internal
, с членами internal
- в этот момент нижние стороны const
полностью уходят.
Общее руководство при использовании const
для определения постоянных значений. Должны ли быть доступны эти константы вне сборки? Если нет, объявите его как
internal static class Pages
{
public const string Home = "Home.xaml";
public const string View2 = "View2.xaml";
/* a few more... */
}
С точки зрения дизайна вашего вопроса кажется, что он может быстро запутаться, используя один статический объект, чтобы содержать все ссылки на страницы. Можете ли вы не просто сохранить его в фактическом объекте страницы?
class view2 {
public const string PageName = "View2.xaml";
... other stuff ...
}
затем вызовите его по строкам...
goTo(view2.PageName);
Я думаю, что это одна из лучших вещей, которые вы можете сделать.
Еще несколько предложений: со строками прекрасно использовать const
s. Если вы хотите использовать разные типы, используйте static readonly
, а затем инициализируйте конструктор static
.
Для другого подхода с использованием перечислений см. этот поток. Поскольку то, что вы пытаетесь сделать, похоже на переименование строки, это может быть для вас.
И не забывайте, что до тех пор, пока вы укажете свои страницы в коде, внесение изменений (например, переименование или перемещение страницы) будет больно. Подумайте о том, чтобы использовать что-то вроде ресурсов или файлов Sitemap. (Если вы используете только класс для списка страниц, , я бы использовал с сильными ресурсами С# ), они будут вести себя так же, как ваш класс, и вы не придется их кодировать вручную.)