this
в этом контексте означает, что это метод расширения, так что вы можете использовать это "нормальный" способ:
MyExtensions.MySingle(someSource)
или это (иногда лучше) способ:
someSource.MySingle()
Это возможно, только если метод static
и находится в классе static
. Кроме того, это не имеет ничего общего с общим аспектом метода - вы можете создавать методы расширения без общих признаков, и у вас все еще есть this
перед параметром.
Методы расширения, как следует из названия, используются для расширения уже существующих классов методами, если у вас нет доступа к источнику или если вы хотите, чтобы он использовался в широком наборе классов. Важно отметить, что вы не получаете доступ к закрытым и защищенным методам и т. Д., Например, когда вы выходите из класса, когда вы создаете метод расширения для типа.
Кроме того, для объяснения углубленным:
Extension Methods (C# Programming Guide)
Хороший вопрос о том, что ключевое слово 'this' не связано с дженериками. – Oded