Почему Visual Studio не создает общедоступный класс по умолчанию? [дубликат]

Моя проблема в том, что ссылка на Child1 отображается как на странице About, так и на странице Child1. Я просто хочу отобразить его на странице about

Просто чтобы уточнить, что здесь происходит: ссылка на Child1 всегда видна в компоненте About, даже если дочерние маршруты активны, но вы этого не делаете хотите показать ссылку, когда активен дочерний маршрут.

Путь 1

Вы можете предоставить запасной контент для <router-view>, когда нет подходящего маршрута (то есть, когда дочерний маршрут не активен). Это была бы хорошая возможность показать ссылку.

<template>
  <div class="about">
    <h1>This is an about page</h1>
    <router-view>
      <router-link to="/child1">Child1</router-link>
    </router-view>
  </div>
</template>

Способ 2

Приведенное выше решение может не сработать, если ваш шаблон более сложный и если вы хотите разместить ссылку в другом месте шаблона.

Таким образом, вам придется вручную контролировать видимость ссылки, используя v-if, чтобы она была видна только тогда, когда дочерний маршрут не активен.

<template>
  <div class="about">
    <h1>This is an about page</h1>

    <!-- Show only when no child routes are active -->
    <router-link v-if="$route.name === 'about'" to="/child1">Child1</router-link>

    <!-- Or, do not show when Child1 route is active -->
    <router-link v-if="$route.name !== 'child1'" to="/child1">Child1</router-link>

    <router-view></router-view>
  </div>
</template>
43
задан Vadim 5 May 2009 в 12:02
поделиться

7 ответов

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

Если вы хотите протестировать свои внутренние классы, в .NET 2.0 и далее вводится новый атрибут с именем InternalsVisibleToAttribute , который

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

Если это действительно вас раздражает, см. % ProgramFiles% \ Microsoft Visual Studio 8 \ Common7 IDE \ ItemTemplates \ CSharp \ 1033 \ Class.zip . Это шаблон, который вы можете изменить в соответствии со своими потребностями. ReSharper имеет аналогичные возможности, но это

28
ответ дан 26 November 2019 в 23:05
поделиться

C # стремится по умолчанию все к минимально необходимой области видимости. Это хорошее соглашение, процитированное в книге Скита ( C # In Depth , стр. 224 «Примечание / Общая информация»):

[Свойства - это] единственное место, где требуется «личное» - везде в C # Модификатор доступа по умолчанию в любой конкретной ситуации является наиболее частным из возможных. Другими словами, если что-то может быть объявлено как частное, то полное исключение модификаторов доступа по умолчанию сделает его закрытым. Это хороший элемент языкового дизайна, потому что трудно случайно ошибиться: если вы хотите, чтобы что-то было более публичным, чем оно есть, вы заметите, когда попытаетесь его использовать.

4
ответ дан 26 November 2019 в 23:05
поделиться

Я предпочитаю это так, как есть. Таким образом, вы должны сознательно решить, что вы хотите, чтобы это было открыто для публики. Это очень похоже на аргумент: хотите ли вы, чтобы ваш компьютер был открыт для внешнего мира по умолчанию, или вы бы предпочли настроить его для доступа в Интернет самостоятельно.

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

2
ответ дан 26 November 2019 в 23:05
поделиться

Вы можете изменить шаблоны для класса C # - обычно расположены в «C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ VC #»

или даже создайте собственный шаблон.

1
ответ дан 26 November 2019 в 23:05
поделиться

Поскольку в C # класс является внутренним по умолчанию. Поэтому VisualStudio следует спецификации C #.

В следующей статье описываются модификаторы доступа и видимость по умолчанию в C #.

http://msdn.microsoft.com/en-us/library/ms173121.aspx

1
ответ дан 26 November 2019 в 23:05
поделиться

Интересно, что это происходит только в C # - в vb.net вы получаете открытый класс по умолчанию.

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

1
ответ дан 26 November 2019 в 23:05
поделиться

Лично я предпочитаю, как есть. Это заставляет вас активно думать, какие классы вы хотите сделать общедоступными.

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

Это несколько субъективно, лично я предпочитаю выключать все и включать только то, что мне нужно, а не наоборот. .

1
ответ дан 26 November 2019 в 23:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: