Почему можно загрузить типы в неподписанной сборке из подписанной сборки с помощью отражения? - PullRequest
6 голосов
/ 02 декабря 2010

У меня есть две сборки A и B. A имеет строгое имя, а B - нет.

Согласно MSDN Я не могу ссылаться на B из A, поскольку сборка со строгим именем может ссылаться только на другуюсборка со строгим именем.

Но тогда почему можно загрузить сборку B, создать экземпляр ее класса и вызвать их методы из сборки A, используя отражение?

// Inside assembly A
Assembly b = Assembly.LoadFrom("B");
obj myObj = b.CreateInstance("MyClass");

Разве это не побеждаетцель не разрешить ссылаться на неподписанные сборки в подписанной?

1 Ответ

8 голосов
/ 22 марта 2011

Ну, вы должны понимать, что сборки со строгими именами предназначены для обхода "DLL Hell" и позволяют "параллельное управление версиями".На самом деле, он не предназначен для обеспечения безопасности.

Поэтому вы можете использовать отражение в сборке со строгим именем для вызова методов и создания экземпляров классов в неподписанных сборках.Фреймворк предполагает, что вы знаете, что делаете, потому что явно загружаете файл - и поэтому вы должны знать, какой файл вам действительно нужен.Другими словами, вы говорите фреймворку: «Для этой сборки я хочу управлять своими версиями».

...