Подтвердить что ты не робот

С#: несогласованная доступность: тип свойства

Что случилось с

public partial class MainWindow : Window
{
    public ObservableCollection<TabViewModel> Tabs { get; set; }
    public ICollectionView TabsViewSource { get; set; }
    public int CurrentIndex { get { return TabsViewSource.CurrentPosition; } }

Я получаю

Непоследовательная доступность: тип свойства "System.Collections.ObjectModel.ObservableCollection" менее доступен, чем свойство "TabsRendering.MainWindow.Tabs"

когда я меняю код на

public partial class MainWindow : Window
{
    ObservableCollection<TabViewModel> Tabs { get; set; }
    public ICollectionView TabsViewSource { get; set; }
    public int CurrentIndex { get { return TabsViewSource.CurrentPosition; } }

Это работает. Что не так с public на ObservableCollection

4b9b3361

Ответ 1

Сделайте TabViewModel общедоступным.

Очевидно, что публичное свойство открытого открытого типа не имеет такого типа, который не является общедоступным. Как свойство могло присутствовать на внешних собраниях?

Второй образец работает, потому что, как правило, предоставление модификаторов доступности не означает, что наименее применимый модификатор выбран по умолчанию - в данном случае: private. Очевидно, что нет проблем согласованности с объявлением частного свойства внутреннего (?) Типа.

Ответ 2

Какая доступность на TabViewModel? Я предполагаю, что это не публично.

Ответ 3

Сообщение очень прямолинейно. Это противоречит тому, что вы хотите сделать. В нем говорится, что у вас есть что-то объявленное как публичное (вкладки, в данном случае), но парень, который будет использовать его, также должен знать о TabViewModel, который не является общедоступным. Либо сделайте как публичный, так и некоторый согласованный спецификатор доступа.

Ответ 4

Вся информация, приведенная выше, является абсолютно правильной и работает нормально. Я просто хочу добавить из личного опыта, что если вы используете TFS и получаете свой проект от TFS, различные версии Visual Studio также могут генерировать эту ошибку.

Я ввел проект с обновлением версии Visual Studio 2013 2 и подключился к TFS, чтобы получить решение. Когда я попытался запустить проект, я получил 80 ошибок. Все они были как "... менее доступными, чем собственность...". Теперь, оказывается, мне нужно обновление 4. Как только моя Visual Studio была обновлена, я почитал изменения и отлично работал.

Это может быть полезно, если ни одно из указанных выше не работает, и вы используете TFS.

Ответ 5

class Tbl_Selected:BaseEntity
{
    public int StudentId { get; set; }

    public int CourseId { get; set; }

    [ForeignKey(nameof(StudentId))]
    public Tbl_Student Tbl_Student { get; set; }

    [ForeignKey(nameof(VahedId))]
    public Tbl_Course Tbl_Course { get; set; }
}

этот код для

public class Tbl_Selected:BaseEntity
    {
        public int StudentId { get; set; }

        public int CourseId { get; set; }

        [ForeignKey(nameof(StudentId))]
        public Tbl_Student Tbl_Student { get; set; }

        [ForeignKey(nameof(VahedId))]
        public Tbl_Course Tbl_Course { get; set; }
    }