2014-02-28 4 views
0

Я разрабатываю приложение для форм Windows. Когда я его запускаю, он дает мне проблему доступности.Ошибка Непоследовательная доступность

MainForm Кодекс

namespace Tutorial2_WebForms 
{ 
    public partial class FormMain : Form 
    { 
     private UserDetails mainUD; 

     public UserDetails MainUD 
     { 
      get { return mainUD; } 
      set { mainUD = value; } 
     } 

enter image description here

UserDetails класс будет выглядеть следующим образом

enter image description here

и ошибку is enter image description here

ответ

2

Свойство User Details является приватным, поскольку вы не указали модификатор доступа, в то время как ваше свойство MainUD является общедоступным.

Данные пользователя должны быть преданы гласности.

public class UserDetails 
{ 
    ... 
} 



public partial class FormMain : Form 
{ 
     private UserDetails mainUD; 

     public UserDetails MainUD 
     { 
      get { return mainUD; } 
      set { mainUD = value; } 
     } 
} 
+0

но когда я изменяю объект UserDetails (mainUD) на публичный, то он также выделяется как MainUD. и дает ту же ошибку дважды –

+1

Вы изменили определение класса данных пользователя или свойство в своей форме? – WraithNath

+0

да спасибо .. это должен быть открытый класс UserDeatails –

2

UserDetails является внутренним, но вы используете его в качестве public собственности в MainForm. Это потому, что модификатор доступа по умолчанию для типов классов является внутренним. Сделайте UserDetails общедоступным, и все будет в порядке.

2

В вашем классе UserDetails не указан модификатор доступа, поэтому по умолчанию используется значение internal (т. Е. К нему могут быть доступны только классы внутри одной и той же сборки).

У вас есть открытый класс (FormMain), который предоставляет класс UserDetails, но клиенты на самом деле не имеют доступа к нему, поскольку он защищен. Поэтому ваш компилятор ошибочен.

Исправлено изменение UserDetails.

1

Вам необходимо сделать класс UserDetailspublic. Классы internal по умолчанию:

public class UserDetails 
{ 
    ... 

Поскольку ваша форма public и выставляет UserDetails класса через свойство, класс должен быть public, а также.

1

Марк UserDetails класс, как

public class UserDetails 
{ 
... 
} 

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

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