Как импорт типов из System.Linq добавляет методы в другие классы?C#

Место общения программистов C#
Ответить
Anonymous
 Как импорт типов из System.Linq добавляет методы в другие классы?

Сообщение Anonymous »

Работая с руководством по инфраструктуре сущностей для ядра .net, я заметил, что при просмотре доступных методов для DbSet в приведенном ниже коде после вставки с использованием System.Linq; они сильно отличались от предыдущих .

Код: Выделить всё

        private static void SimpleSamuraiQuery()
{
using (var context = new SamuraiContext())
{
var samurais = context.Samurais. // Add(), Remove(), etc..
}
}
После включения оператора using я внезапно смог увидеть все методы Linq, которые вы ожидали увидеть, но это вызвало у меня небольшое любопытство, поэтому я решил проверьте класс DbSet, нажав F12:

Код: Выделить всё

public abstract class DbSet : IQueryable, IEnumerable, IEnumerable, IQueryable, IAsyncEnumerable, IInfrastructure, IListSource where TEntity : class
Я заметил, что он реализует интерфейс System.Linq.IQueryable, но в самом классе DbSet не объявлен ни один из методов Linq. Мне это кажется немного странным, но я решил копнуть глубже и проверить интерфейс IQueryable:

Код: Выделить всё

namespace System.Linq
{
//
// Summary:
//     Provides functionality to evaluate queries against a specific data source wherein
//     the type of the data is known.
//
// Type parameters:
//   T:
//     The type of the data in the data source.
public interface IQueryable : IEnumerable, IEnumerable, IQueryable
{
}
}
Что за фигня? Простите за мой французский, но что здесь происходит? Почему при написании с использованием System.Linq кажется, что в класс «вводится» больше методов, и почему интерфейс кажется пустым?

Подробнее здесь: https://stackoverflow.com/questions/597 ... er-classes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»