Почему мой объект List не содержит определения «Add»? - PullRequest
2 голосов
/ 08 октября 2019

В настоящее время я пытаюсь получить набор данных с SQL-сервера в список, чтобы затем отобразить его на странице. Я честно посмотрел здесь много ответов, и каждая новая попытка приводит меня к другой ошибке.

Из того, что я прочитал, это должно работать. ScriptList является List и должно иметь функциональность Add. Однако это просто не так. Это мой код на данный момент:

    public ScriptList Index()
    {
        var scriptList = new ScriptList();

        //List<ScriptItem> scriptlst = new List<ScriptItem>();

        string connectionString = _configuration["ConnectionString:localhost"];

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            string statement = "SELECT ScriptGUID, ScriptName, ScriptDescription, DateAdded FROM dbo.Scropts;";
            SqlCommand command = new SqlCommand(statement, connection);
            connection.Open();

            using (SqlDataReader reader = command.ExecuteReader())
            {
                while(reader.Read())
                {
                    scriptList.Add<ScriptItem>(new ScriptItem{GUID = Convert.ToString(reader["ScriptGUID"]),
                                                              Name = Convert.ToString(reader["ScriptName"]),
                                                              ShortDescription = Convert.ToString(reader["ScriptDescription"]),
                                                              DateAdded = Convert.ToDateTime(reader["DateAdded"])});

                }
            }


        }

        return scriptList;
    }

}
public class ScriptList
{
    public List<ScriptItem> ScriptItems {get;set;}
}
public class ScriptItem
{
    public string GUID {get;set;}
    public string Name {get;set;}
    public string ShortDescription {get;set;}
    public DateTime DateAdded {get;set;}
}

Это дает мне ошибку ниже:

«ScriptList» не содержит определения «Добавить» и лучший метод расширенияПерегрузка «ConfigurationExtensions.Add (IConfigurationBuilder, Action)» требует приемника типа «IConfigurationBuilder»

Я попытался изменить определение ScriptList на List<ScriptItem> scriptlist = new List<ScriptItem>();, однако это приводит кошибка ниже:

Невозможно неявно преобразовать тип 'System.Collections.Generic.List' в 'asp.Pages.ScriptList'

Я действительно не понимаю, в чём делоВот. Почему scriptList не имеет функциональности Add, и почему scriptlist имеет , несмотря на то, что оба они объявлены как List<ScriptItem>, которые не являются (очевидно,) тоже самое?

Ответы [ 3 ]

5 голосов
/ 08 октября 2019

Нет, вы создали класс, который имеет List<T> член . Это не значит, что ваш класс наследует всех членов от указанного члена.

Вы просто ищете scriptList.ScriptItems.Add(), обратите внимание на добавленный ScriptItems. То, что - это ваш список, а не ScriptList класс.

3 голосов
/ 08 октября 2019

Вы бы хотели использовать scriptlist.ScriptItems.Add() в вашем примере.

1 голос
/ 08 октября 2019

Ваш список определен в классе ScriptList, поэтому вам нужно сделать:

scriptList.ScriptItems.Add();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...