Я создал два метода расширения: FilterAnyType , который работает на IEnumberable<T>
, и FilterMovieType , который работает на IEnumerable<Movie>
:
public static IEnumerable<T> FilterAnyType<T>(this IEnumerable<T> source, Func<T,bool> predicate)
{
//code goes here
}
public static IEnumerable<Movie> FilterMovieType<Movie>(this IEnumerable<Movie> source, Func<Movie, bool> predicate)
{
//code goes here
}
Изатем я создал два разных списка:
var movies = new List<Movie>();
var customers = new List<Customer>();
Как и ожидалось, метод FilterAnyType
доступен для обоих экземпляров movie
и customers
.Однако метод FilterMovieType
также доступен для экземпляра customer
, и я этого не ожидал.
Я изучаю методы расширения (отсюда и эта практика), и, насколько я понимаю, это то, чтоКлючевое слово this
используется для определения типа объекта, для которого будет добавлен расширенный метод.
Учитывая это, я ожидаю, что FilterMovieType
будет доступно только для экземпляров IEnumerable<Movie>
.Почему он также доступен для IEnumerable<Customer>
?
Спасибо !!