2013-05-01 4 views
0

Я искал некоторые форумы и темы для поиска ответа, но я не могу найти решение для своей проблемы. Я отправлю код:C# Несогласованность Доступность публичного метода (с реф.)

namespace Configurator 
{ 
    public partial class Dialog : Form 
    { 
     private DataStorage dataStorage = null; 

     public Dialog 
     { 
      InitializeComponent(); 
     } 

     public void setDataStorage(ref DataStorage ds) 
     { 
      this.dataStorage = ds; 
     } 
    } 
} 

And it's being used in this class:

namespace Configurator 
{ 
    public partial class MainView : Form 
    { 
     private DataStorage dataStorage = new DataStorage(); 
     private Dialog DialogBox = new Dialog(); 

     public MainView 
     { 
      InitializeComponent(); 
     } 

     private void newObjectButton_Click(object sender, EventArgs e) 
     { 
      DialogBox.Show(); 
      DialogBox.setDataStorage(ref dataStorage); 
     } 
    } 
} 

This is the error: Inconsistent accessibility: parameter type 'ref Configurator.DataStorage' is less accessible than method Configurator.Dialog.setDataStorage(ref Configurator.DataStorage)

+3

и ошибка была? Я предполагаю, что ваш DataStorage должен быть общедоступным. У нас нет кода для этого – NSGaga

+0

Извините, забыли добавить это! Одна минута! – Yordi

+0

Сделать переменную dataStorage общедоступной –

ответ

2

Отметить свой класс DataStorage с public и ваша ошибка будет уходить :)

Ваш класс Dialog является общедоступным. Ваш метод setDataStorage также является общедоступным. Это делает этот метод видимым для всех других сборок. Но как другие сборки могут использовать этот метод, если у них нет доступа к параметру типа DataStorage, потому что тот не отображается (вероятно, потому, что он отмечен как личный или внутренний.)

+0

@ Martin Mulder & @ Codelgnoto К сожалению, это не помогло. По-прежнему такая же ошибка. Спасибо за попытку! – Yordi

+0

Вы не нашли ключевое слово после DataStorage? Таким образом, класс соответствует методу, в котором он используется. Отметьте свой класс DataStorage ** public ** ... –

+1

@David: Вау, пропущено самое главное в моем ответе. Благодаря! –

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