Как сказать генератору кода для XAML в WPF объявить мое окно «внутренним»? - PullRequest
1 голос
/ 05 июня 2011

Как мне сказать генератору кода для XAML в WPF объявить мое окно как "внутреннее"?

По умолчанию при запуске VS2010 Create New Project сгенерированный код объявляется как «public». Я использую Autofac в качестве своего IoC, и я следую шаблону, где моя ViewModel устанавливается путем внедрения свойства. Я хотел бы объявить мою ViewModel как "приватную", но компилятор жалуется на непоследовательную доступность. Я могу изменить «public» в MainWindow.xaml.cs на «internal», но как мне сказать коду, генерирующему остальную часть класса, также объявить MainWindow как «internal»?

Код, который у меня сейчас есть:

public partial class MainWindom : Window
{
    public ViewModel ViewModel { get; set; }
}

public class ViewModel
{
}

Код, который я хотел бы иметь:

internal partial class MainWindom : Window
{
    public ViewModel ViewModel { get; set; }
}

internal class ViewModel
{
}

Или я должен просто отказаться от борьбы с инструментами и просто пойти с этим?

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

1 Ответ

2 голосов
/ 05 июня 2011

Класс, производный от Window, определенный в пространстве имен верхнего уровня (как и все сгенерированные классы Window), никогда не может быть объявлен private. Попытка сделать это приведет к другой ошибке:

ошибка CS1527: элементы, определенные в пространстве имен, не могут быть явно объявлены как частные, защищенные или защищенные внутренние

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

EDIT

Окно может быть внутренним , подробнее: Создание внутреннего файла XAML в .Net

...