Комментарий Друзей может быть правильным, но я не знаю ваш вариант использования, поэтому, возможно, он действителен.
Как указано в других комментариях / ответах, метод Load ничего не возвращает, поэтому ваша строка
return announcements;
ничего не делает.
Вы фактически добавляете элементы во внутренний список, который у вас есть.
Итак, я думаю, с вашим текущим кодом, это будет работать, чтобы показать вам два ваших элемента в вашем сервисном коде.
Announcements announcements = new Announcements(ID, moduleID, _config, _logger);
return announcements.announcements;
Очевидно, это выглядит сбивающим с толку и не то, что вы хотели. Поскольку вы наследуете от List, то вы хотите добавить элементы к себе в функции Load. Поэтому я считаю, что следующий код будет работать. Ключ заключается в том, чтобы использовать просто Добавить вместо объявлений. Добавить
namespace Api.Collection
{
public class Announcements : List<Announcement>
{
IConfiguration _config;
ILoggerManager _logger;
private string _uspGetAnnouncement = "storedproced_GetAnnouncemnt";
public Announcements()
{
}
public Announcements(int employeeID, int moduleID, IConfiguration config, ILoggerManager logger)
{
_config = config;
_logger = logger;
if (employeeID > 0 && moduleID > 0)
{
Load(employeeID, moduleID);
}
}
public virtual void Load(int employeeID, int moduleID)
{
List<SqlParameter> lParam = new List<SqlParameter>();
Util.DataUtil dataUtil = new Util.DataUtil(_config);
SqlParameter param;
if (employeeID > 0 && moduleID > 0)
{
param = new SqlParameter("@employeeID", employeeID);
lParam.Add(param);
param = new SqlParameter("@moduleID", moduleID);
lParam.Add(param);
}
DataTable dt = Util.GetDataTable(_uspGetAnnouncement, lParam.ToArray());
if (dt.Rows.Count > 0)
{
foreach (DataRow dr in dt.Rows)
{
Add(new Announcement(dr, dt.Rows.Count, _config, _logger));
}
}
}
}
}