C # Несовместимая доступность: тип возврата менее доступен, чем метод - PullRequest
0 голосов
/ 13 декабря 2018

Я работаю над приложением для учебы.Теперь я только что запустил приложение, в котором у меня есть база данных с футбольной лигой, клубами и т. д. Теперь у меня есть список с клубом и игроками. Сейчас я пытаюсь добавить больше лиг, чем просто 1. Но я получаю эту ошибку, когда имделать то же самое, чем делать раньше.это код не рабочего списка:

public List<Competitie> GetAllCompetities()
        {
            List<Competitie> Competitie = new List<Competitie>();
            using (MySqlConnection connection = new MySqlConnection(connectionString))
            {
                connection.Open();
                string query = "Select * from competitie";
                MySqlCommand selectallcompetitiecommand = new MySqlCommand(query, connection);
                MySqlDataReader reader = selectallcompetitiecommand.ExecuteReader();
                while (reader.Read())
                {
                    Competitie comp = new Competitie();
                    comp.IdCompetitie = reader.GetInt32(0);
                    comp.NaamCompetitie = reader.GetString(1);
                    Competitie.Add(comp);
                }
            }
            return Competitie;
        }

, а затем это код клубов, которые работают:

public List<Clubs> GetAllClubs(string selecteditem)
        { //Zorgt voor alle dingen van de tabel clubs.
            List<Clubs> Clubs = new List<Clubs>();
            using (MySqlConnection connection = new MySqlConnection(connectionString))
            {  
                connection.Open();
                string query = "Select * from databasevoetbal.clubs where competitie.naamcompetie = '" + selecteditem + "' and clubs.idcompetitie = competitie.idcompetitie";
                MySqlCommand selectAllClubsCommand = new MySqlCommand(query, connection);
                MySqlDataReader reader = selectAllClubsCommand.ExecuteReader();
                while (reader.Read())
                {
                    Clubs Club = new Clubs();
                    Club.idClubs = reader.GetInt32(0);
                    Club.NaamClubs = reader.GetString(1);
                    Club.aantalkampioenschappen = reader.GetInt32(2);
                    Club.opgericht = reader.GetInt32(3);
                    Club.idcompetitie = reader.GetInt32(4);
                    Clubs.Add(Club);
                }
            }
            return Clubs;
        }

Это тот же код, только запрос вклуб использует выбранный элемент из списка, но кто-нибудь знает, почему я получаю эту ошибку в первом списке:

Ошибка CS0050 Несоответствующая доступность: тип возврата 'List<Competitie>' менее доступен, чем метод 'DatabaseManager.GetAllCompetities() '

Код для класса:

class Competitie
    {
        public int IdCompetitie { get; set; }
        public string NaamCompetitie { get; set; }

        public override string ToString()
        {
            return string.Format("{0}", NaamCompetitie);
        }
    } 

1 Ответ

0 голосов
/ 13 декабря 2018

Вы должны сделать ваш класс общедоступным:

public class Competitie

Если вы не укажете модификатор доступа, по умолчанию он будет internal (т.е. недоступен только внутри сборки, в которую он скомпилирован).

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

То, как вы его получили, есть вероятность, что код, который может вызватьМетод GetAllCompetities () (потому что он публичный) не может получить доступ к классу, который возвращает метод.И очевидно, что это не логичная ситуация - вызывающий код не сможет использовать или понять данные, которые он возвращает.

NB. В зависимости от контекста, на самом деле может быть более уместно вместо этого отмечать GetAllCompetities ()метод как internal, чтобы соответствовать классу.Таким образом, ни один из них не доступен за пределами сборки.Это полностью зависит от вашей ситуации и того, что вам нужно.Я просто отмечаю это для полноты.Это устранит ошибку, но приведет к другому уровню доступности для этих частей кода.

Вот документация для модификаторов доступа C #: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/access-modifiers

...