Member 13827259 Ответов: 1

Как удалить несогласованную доступность в C#


при создании метода списка
имя метода говорит : несогласованная доступность

Что я уже пробовал:

public List<category> Addcat()//this is the error while write this code
    {
    string qry = "select * from category";
    List<category> list = new List<category>();
    con.Open();
        {
        SqlCommand cmd = new SqlCommand(qry, con);
        SqlDataReader dr = cmd.ExecuteReader();
        while (dr.Read())
            {
            category cat = new category();
            cat.id = Convert.ToInt32(dr[0]);
            cat.nam = dr[1].ToString();
            }
        dr.Close();
        con.Close();
        }
    return list;
    }

1 Ответов

Рейтинг:
2

OriginalGriff

Не размещайте код как решение - это удаляет ваш вопрос из списка "без ответа" и делает его менее вероятным для рассмотрения. Я переместил ваш код в вопрос и удалил ваш "ответ"

"Несогласованная доступность" означает, что вы пытаетесь добавить что-то, что объявлено более доступным, чем класс, который его содержит.

Например, а internal класс С а public метод:

internal class MyClass
   {
   public void MyMethod (){}
   }
Потому что класс есть internal он доступен только в файлах одной сборки, вне сборки он не может быть использован или даже ссылаться на него вообще.
Но MyMethod является public, который означает, что он может быть использован в любом месте на всех. Так как же его можно использовать? Они могут получить доступ MyMethod, но не объявлять и не использовать переменную типа MyClass - какие средства Mymethod это public метод, который не может быть использован вне одной и той же сборки!

И вот что говорится в сообщении об ошибке: "несогласованная доступность": "доступность метода больше, чем доступность класса, который его содержит, поэтому он не может быть использован, как вы могли бы ожидать"

Измените свой класс на public, или измените свой метод, чтобы соответствовать (или быть менее доступным, чем) класс.


Richard Deeming

Я думаю, тебе нужно еще немного кофе! :)

В этом нет ничего плохого. internal класс имеющий а public метод. Код, который не может получить доступ к классу, также не может получить доступ к методу.

Проблема возникает, когда, например, у вас есть public способ получения один public класс который выставляет напоказ internal класс:

internal class Foo 
{
    public void MyMethod() { } // No error here
}

public class Bar
{
    public Foo Bar() { } // Error here
    public IEnumerable<Foo> Bars(); // Error here
    public void Bah(Foo foo) { } // Error here
    public void Bah(IEnumerable<Foo> foo) { } // Error here
    public void Baa<T>(T foo) where T : Foo { } // Error here
}

OriginalGriff

Сейчас я нормально пью кофе, но тогда не пил ... :вздох: я виню болезнь Альцгеймера ...