Подтвердить что ты не робот

Как ссылаться на пространство имен из конкретной сборки?

Итак, вот моя проблема.

  • Проект My (test) ссылается как на Castle Windsor, так и на Rhino Mocks.
  • Я создаю класс, который реализует Castle.Core.Interceptor.IInterceptor из сборки Castle.Core.dll.
  • При создании Rhino Mocks Айенде использовал Castle.Core.Interceptor и включает в себя полное пространство имен darn внутри Rhino.Mocks.dll

Поэтому, когда я пытаюсь построить, я получаю сообщение об ошибке

Тип 'Castle.Core.Interceptor.IInterceptor' существует в обоих 'c:...\Libraries\Rhino.Mocks.dll' и 'C:...\Библиотеки\Castle.Core.dll

Как я могу указать, что я хочу использовать экземпляр IInterceptor из файла Castle.Core.dll, а не тот, который включен в Rhino Mocks?

4b9b3361

Ответ 1

Оставьте конкретный ответ здесь, если кто-то придет позже. Из статьи здесь.

  • Выберите одну из двух сборок в ссылках проекта (в моем случае я выбрал Castle.Core). Нажмите F4, чтобы открыть свойства и ввести псевдоним CastleCore.
  • В верхней части проблемного файла cs поместите extern alias CastleCore;
  • Укажите свой класс с помощью CastleCore::Castle.Core.Interceptors.IInterceptor. Или в моем случае я просто сделал:

используя cci = CastleCore:: Castle.Core.Interceptors;

и теперь может ссылаться на

cci.IInterceptor

Ответ 2

Вы можете использовать extern alias для псевдонима одной из сборок, чтобы предотвратить неоднозначность.