Можно ли отключить отражение от сборки .NET?

Я хотел бы запустить стороннюю сборку .NET на моем API. Я хочу, чтобы он вызывал свои собственные методы и объекты по своему усмотрению, но отказывался от доступа ко всему, что мой API явно не дает. В частности, если мой API передает объект в код третьей стороны как IMyObject, я не хочу, чтобы они использовали отражение или какой-либо метод для повышения этого объекта, скажем MyObject, который реализует интерфейс.

Есть ли способ отрицать способность использовать отражение в этой третьей стороне сборки? Я полностью контролирую все, поэтому мне не нужно останавливать людей от декомпиляции моей сборки, просто злоупотребляя им во время выполнения.

Ответ 1

То, что вы ищете, - это сборка в песочнице. Это может быть достигнуто uisng CAS (Code Access Security) в .Net.

Вот как это работает. Вы создаете AppDomain, назначая ему ограниченные права. Например, вы разрешаете отображение пользовательского интерфейса, но не разрешаете использовать файловую систему или отражение. Затем вы загружаете сборку в нее и запускаете ее.

.Net 4.0 представляет совершенно новую модель безопасности. Но я не знаю много об этом.

Вот что вам нужно начать:

Откройте для себя методы безопасного размещения ненадежных надстроек с .NET Framework 2.0

Ответ 2

Если вызывающий абонент работает в режиме "Полное доверие", ничего не может быть сделано. Он всегда будет иметь полный доступ к сборке.

Лучше всего сфотографировать сборку. Это сделает сборку немного сложнее для реинжиниринга.