Если не считать «не распространять их», нет 100% надежного способа предотвратить несанкционированный доступ.
Вы можете посмотреть устройства лицензирования аппаратного или программного обеспечения. Обсыпайте лицензионные проверки по всему коду и, если устройства нет, просто прервите все.
Другая идея заключается в том, чтобы объявить все ваши типы в сборке как internal
, а затем настроить исполняемый файл вашего основного приложения в качестве сборки-друга с атрибутом InternalsVisibleTo
. Обычно это используется для внутреннего тестирования юнит-модулей, и я не знаю, насколько это будет безопасно на практике. Это не помешает людям разобрать вашу сборку, поэтому вы все равно можете захотеть запутать ее, и это совсем не сработает, если вы продаете библиотеку и намереваетесь использовать ее только для лицензий клиентов (поскольку вам придется предоставлять собственные сборки каждому клиент).