У меня следующая ошибка
CS0053 Несовместимая доступность: тип свойства
List<Koers>
менее доступен, чем свойствоDataStorage.deKoers
Эта проблема похожа на другие сообщения; пока я не могу найти правильное решение:
Я подозреваю, что список играет неожиданную роль; как это работает со свойством "MyText".
DataStorage instStorage = new DataStorage();
private void LadenInventarisVanDisk()
{
var x = instStorage.MyText;
Console.WriteLine(x.ToString() );
}
namespace Storage
{
public class DataStorage
{
/* this works fine*/
private string _myText = "text to save" ;
public string MyText
{
get { return _myText; }
set { _myText = value; }
}
private List<Inventaris> _deLijst;
/* adding public generate the accessible error*/
public List<Inventaris> DeLijst
{
get { return _deLijst; }
set { _deLijst = value; }
}
private List<Koers> _deKoers;
/* excluding the public means i cannot call this property from another location */
List<Koers> deKoers
{
get { return _deKoers; }
set { _deKoers = value; }
}
}
}
Вероятно, ответ заключается в том, что классы Inventaris
и/или Koers
менее доступны, чем публичные (доступность по умолчанию для классов является internal
если она не является вложенной, и private
если вложенная.) Оба являются более строгими, чем публичные, и вызовут ошибку). Хороший способ исправить это - всегда явно указывать уровень доступа для всего - это делает такие ошибки легче увидеть
Доступность List<T>
определяется доступностью данного T
, поэтому ваши классы Koers
и Inventaris
должны быть общедоступными, чтобы List<Koers
/List<Inventaris>
возвращался вашими свойствами, поскольку свойство не может быть более видимым, чем объект, который он возвращает.
Смотрите это для другого примера.
Итак, ваши классы должны быть объявлены так:
public class Koers
{
//Class code here
}
public class Inventaris
{
//Class code here
}
РЕДАКТИРОВАТЬ: Как предложил Крис, я немного прояснил свой ответ.
List<T>
виден только как T
List
является нормальным изSystem.Collections.Generic
или это пользовательский класс в вашем коде? Обычно я ожидал бы увидеть эту ошибку, если быList
был пользовательским свойством, которое является личным или внутренним, что означало бы, что ваше общедоступное свойство могло быть видно извне сборки, но классList
не мог ...