2016-03-16 2 views
2

У меня есть архитектура, состоящая из двух DLL и одного исполняемого файла. Обе библиотеки DLL определяют класс с тем же именем и пространством имен, но потенциально разные реализации. То, что я хотел бы сделать, - создать объект каждого из этих классов и одновременно сосуществовать одновременно.Создавать разные классы с тем же именем/пространством имен

Но, как мы знаем, картина говорит больше, чем тысяча слов, так что здесь вы идете: Architecture overview

Удивительно: это на самом деле, кажется, работает! Я реализовал небольшой прототип, используя множество отражений для загрузки DLL и создания объектов.

Теперь мой вопрос: Почему это работает? Должна ли существовать проблема с обоими классами в том же AppDomain? Можно ли так поступать, или мне просто повезло?

+4

Ключевое слово «сборка квалифицированного имени». То, что вы не можете сделать это с C#, набрав имя класса, не означает, что среда выполнения не может этого сделать. – CodeCaster

+0

в стороне: пожалуйста, избегайте конфликтов имен и имен имен. они вызовут много головных болей позже. –

ответ

6

Тип больше, чем его имя и пространство имен. Он также включает сборку, чтобы квалифицировать ее. Вы можете сравнить AssemblyQualifiedName property любого System.Type и посмотреть, что они разные.

Смежные вопросы