Ответ 1
Вам нужно использовать псевдоним extern - введенный в С# 2.
Anson Horton имеет прохождение в своем блоге, которое может показаться вам полезным.
Сегодня я столкнулся с любопытной задачей...
Эта проблема включает в себя две библиотеки .NET, которые мне нужно ссылаться из моего приложения. Оба из которых я не контролирую и имеют одинаковое пространство имен внутри них.
Итак...
У меня есть foo.dll
, который содержит класс Widget
, который находится в пространстве имен Blue.Red.Orange
.
У меня есть bar.dll
, который также содержит класс Widget
, который также находится в пространстве имен Blue.Red.Orange
.
Наконец, у меня есть приложение, которое должно ссылаться как на foo.dll
, так и на bar.dll
. Это необходимо, так как в моем приложении мне нужно использовать класс Widget
из foo
, а также класс Widget
из bar
Итак, вопрос в том, как я могу управлять этими ссылками, чтобы я мог быть уверен, что я использую правильный класс Widget
?
Как уже упоминалось, я не контролирую библиотеки foo
или bar
, они такие, какие они есть и не могут быть изменены. Однако у меня есть полный контроль над моим приложением.
Вам нужно использовать псевдоним extern - введенный в С# 2.
Anson Horton имеет прохождение в своем блоге, которое может показаться вам полезным.
Думаю, вам нужно использовать extern alias
См. http://msdn.microsoft.com/en-us/library/ms173212.aspx
Вот прохождение игры. http://blogs.msdn.com/b/ansonh/archive/2006/09/27/774692.aspx
Вы можете использовать свойство Псевдонимы "для разрешения конфликтов. Выберите библиотеку и откройте окно свойств. Об этом уже говорилось в этом сообщении fooobar.com/questions/98068/...
Ничего себе, это сложно. Я вставляю, я бы создал две библиотеки-обертки:
и поддерживайте там разные пространства имен.
Я был бы удивлен, если вы сможете это сделать, не используя рефлексии.
Возможно, было бы проще создать свои собственные библиотеки FooWrapper и BarWrapper, которые будут ссылаться на foo и bar и выставить их содержимое снова в разных пространствах имен.