Member 10874581 Ответов: 1

Зачем определять тип функции ienumerable в MVC


public IEnumerable<Role> GetRoles()
        {
            using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Mystring"].ToString()))
            {
                return con.Query<Role>("Usp_GetRoles", null, null, true, 0, CommandType.StoredProcedure).ToList();
            }
        }


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

Я хочу знать почему определите этот тип пожалуйста ребята помогите мне

1 Ответов

Рейтинг:
1

cigwork

Короткий ответ заключается в том, что это делает функцию еще более похожей на черный ящик.

Вызывающему абоненту не нужно знать или даже заботиться о том, реализовали ли вы извлечение в виде роли[] или списка & lt;role> или любого другого типа коллекции... при условии, что коллекция реализует интерфейс интерфейс IEnumerable

Таким образом, если бы вы нашли более новый и гораздо более эффективный способ извлечения данных, которые возвращают другой вид коллекции, реализующей IEnumerable<>, Вы могли бы изменить внутренности метода, и кроме сокращения времени вызова это не повлияло бы ни на один существующий код.

Если, скажем, вы сделали возвращаемый тип Role[] и изменили кишки на return List< role & gt;, то каждый вызов метода должен быть изменен.

Используйте свою любимую поисковую систему, чтобы найти "Программирование интерфейса". Есть много статей, которые объясняют эту идею. Вот только один...

Программа к интерфейсу не реализация/[^]


Member 10874581

непонятный

Ben J. Boyle

Что тут непонятного? Разработчик явно решил вернуть более гибкий тип, чем принудительный список или массив. Как говорит @cigwork, это позволит внутренним элементам функции изменяться без необходимости изменять какой-либо код, использующий результаты функции.