3

Когда я добавляю новый класс в проект, спецификатор модификатора/спецификатора класса для вновь созданного класса в Visual Studio исключается, тем самым делая его internal.Модификатор класса для автоматически сгенерированных классов

Есть ли способ, который я могу указать в настройках Visual Studio, когда всякий раз, когда я прошу создать новый класс, сделайте класс public?

Я заглянул в меню Tools-> Options, но ничего не нашел. Я предполагаю, что это может быть в папке Шаблоны в папке «Мои документы \ Visual Studio xxxx» в папке .

ответ

3

Да, вы можете изменить шаблоны файлов (или просто предоставить дополнительные шаблоны файлов), like so. Однако, прежде чем вы это сделаете, я задал себе вопрос: действительно ли стоит , что много усилий, чтобы добавить желаемую доступность? Я склонен ошибаться на стороне прагматического, когда дело доходит до этого ... если бы я хотел значительно разных шаблонов, я мог бы это сделать. В противном случае ... meh.

+0

Спасибо очень много. –

2

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

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

2

Если опустить модификатор класса это либо:

  • внутренние (не вложенные классы)
  • частные (на вложенные классы)

Я просто думал, что я бросьте туда (что это не ВСЕГДА внутреннее, если опущено).


Но, если вы действительно хотите изменить шаблоны вы хотите как правило, перейдите в папку установки (я буду использовать папки по умолчанию):

** C: \ Program Files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE **

Здесь вы найдете различные папки с шаблонами. Вы ищете следующий (если копнуть глубже): C: \ Program Files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class.zip

Просто изменить класс .cs файл там.О, и в случае, если вы запутались его здесь оригинальная версия:

using System; 
using System.Collections.Generic; 
$if$ ($targetframeworkversion$ >= 3.5)using System.Linq; 
$endif$using System.Text; 

namespace $rootnamespace$ 
{ 
    class $safeitemrootname$ 
    { 
    } 
} 

Вы нужный вариант:

using System; 
using System.Collections.Generic; 
$if$ ($targetframeworkversion$ >= 3.5)using System.Linq; 
$endif$using System.Text; 

namespace $rootnamespace$ 
{ 
    public class $safeitemrootname$ 
    { 
    } 
} 
+0

Единственный раз, когда что-то является «общедоступным» без маркировки «public», это 'get' и' set' конструкции для свойств, когда само свойство является 'public' :) Из книги Джона Скита :) –

Смежные вопросы