Есть ли способ сделать область кода "только для чтения" в визуальной студии? - PullRequest
3 голосов
/ 25 января 2009

Время от времени я заканчиваю модификацию фрагмента кода и хочу «заблокировать» или сделать область кода «только для чтения». Таким образом, единственный способ изменить код - это сначала разблокировать его. Есть какой-либо способ сделать это?

Ответы [ 6 ]

5 голосов
/ 25 января 2009

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

Чтобы объявить частичный тип, вы просто используете контекстное ключевое слово partial в объявлении:

// MyClass.First.cs:
public partial class MyClass
{
    void Foo()
    {
        Bar();
    }

    void Baz()
    {
    }
}

// MyClass.Second.cs:
public partial class MyClass
{
    void Bar()
    {
        Baz();
    }
}

Как видите, все заканчивается так, как если бы все источники находились в одном файле - вы можете без проблем вызывать методы, объявленные в одном файле из другого.

2 голосов
/ 25 января 2009

Скомпилируйте его в библиотеку dll и сделайте ее доступной для использования в других проектах.

1 голос
/ 25 января 2009

Учитывая ваше опровержение частичным классам ... я не знаю, как в одном файле, за исключением документации. Другие варианты?

  • наследование; но защищенный код в базовом классе (в сборке, которой вы управляете); Наследники могут вызывать только public / protected членов
  • postsharp - прикрепить защищенную логику к атрибутам, объявленным извне

Тем не менее, оба из них по-прежнему требуют нескольких файлов (и, вероятно, несколько сборок).

1 голос
/ 25 января 2009

Разделить код на отдельные файлы, а затем зарегистрировать систему управления исходным кодом?

0 голосов
/ 09 марта 2009

Это абсолютно не нужно, если вы используете систему контроля версий. Поскольку после того, как вы отметили это, не имеет значения, какую часть кода вы редактируете, вы всегда можете изменить или откатиться назад. Черт возьми, вы можете случайно стереть весь исходный код и получить его обратно.

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

0 голосов
/ 25 января 2009

Я думал об этом, но я бы предпочел сохранить класс в одном файле. - данмин

Извините, макинтош Немного вуду, так как предварительная фиксация SVN может его поймать, но в противном случае нет другого решения, кроме
// если вы измените этот код, вас уволят

...