Посмотрите на используемые пространства имен:
Acme.BusinessModules.MyModule
Acme.Infrastructure.Interface
Нет причин, по которым компилятор будет выглядеть в Acme.Infrastructure.Interface
при компиляции класса в Acme.BusinessModules.MyModule
. Теперь, если код, который вы писали, был (скажем) Acme.Infrastructure.Interface.SomethingElse
, тогда это было бы другое дело - но здесь похоже, что компилятор делает абсолютно правильные вещи. Тот факт, что оба пространства имен начинаются с Acme
, отсутствует ни здесь, ни там.
Как ты сам сказал:
Мое понимание разрешения пространства имен заключалось в том, что компилятор сначала будет искать класс в текущем пространстве имен, а затем его родителей.
Пространства имен предков здесь Acme.BusinessModules
и Acme
- , а не Acme.Infrastructure.Interface
.
Я бы также настоятельно посоветовал вам , а не для создания имен классов, которые конфликтуют с именами в System
. Это действительно просто напрашивается на неприятности.