Этот вопрос, похоже, умер, поэтому я решил предложить щедрость.
Что меня больше всего интересует, так это то, что мой сценарий в ETA1 ниже жизнеспособен и используется. Если это не так, то хорошее объяснение, почему бы не быть хорошим ответом. Другим хорошим ответом будет альтернатива (но не включая атрибут internalsvisibleto).
Лучший ответ был бы: да, он жизнеспособен, это делают все, и покупателям это нравится!
ETA2: я думаю, что подумал о хорошем решении. Я предоставляю заказчику распространяемую версию, которая является такой же функциональной, как и его версия, но не имеет лицензий и содержит скрытые классы и элементы с использованием атрибутов.
Я могу сделать это с помощью директив компилятора на каждом важном элементе, но мне было интересно, существует ли какой-либо глобальный способ скрыть всех членов класса?
Упрощенный сценарий: -
У меня есть класс, который каким-то образом расширяет контроль, и я хочу продать свой класс под двумя лицензиями;
(1) Стандарт - клиент получает x количество элементов управления, которые используют мой класс, но не могут создать экземпляр класса (его внутреннего).
(2) Разработчик - аналогично стандартному, за исключением того, что они могут создавать свои собственные элементы управления, использующие мой класс.
Моя проблема в том, что, когда клиент-разработчик приходит, чтобы продать свои элементы управления, он не может не открыть мой класс всем своим клиентам.
--- Игнорировать это
Единственный способ обойти это, на мой взгляд, состоит в том, чтобы разработчик каким-то образом интегрировал мою сборку в свою, и таким образом я мог бы сохранить конструктор внутренним. Или используйте внутренности, видимые для атрибута. / Игнорировать это ---
Я уверен, что у кого-то здесь была такая же ситуация, и любая помощь будет принята с благодарностью.
ETA1: Я думаю здесь вслух, но у меня мог бы быть список допустимых имен вызывающих сборок, к которым клиент мог бы добавить. Когда они отправляют свой продукт, сборки их клиентов не будут в списке, и, следовательно, они не смогут создавать экземпляры определенных классов. (Список может быть хеширован).