От How to: Implement and Call a Custom Extension Method:
1.Define статический класс содержит метод расширения. Класс должен быть , видимый для кода клиента.
2.Используйте метод расширения как статический метод с как минимум та же видимость, что и класс.
Таким образом, содержащий класс должен быть видимым для кода, в котором вы собираетесь использовать метод. И сам метод расширения должен иметь по крайней мере такую же видимость (не менее).
Отвечая на вопрос, если можно скрыть, содержащий класс, но не оставляют метод расширения видимой между сборками: нет, вы не можете. Вы можете попробовать сами: просто создайте статический класс с помощью простого метода расширения (расширяющего любой класс, который вам нравится) в одной сборке; введите класс internal
и метод public
. Очевидно, вы не сможете использовать этот метод в любой другой сборке, а также в содержащем классе в целом. Несмотря на то, что он выполняет второе правило, указанное выше, он прерывает первый, поскольку класс containg должен быть видимым для кода с использованием метода расширения.
Методы расширения - это синтаксический сахар для вызова static
методов. Представьте себе, если вы хотите вызвать простой статический метод, не имеющий доступа к содержащемуся классу. Будет ли это работать? Точно нет.