У меня проблема с пространствами имен, используемыми моими ссылками на службы. У меня есть несколько служб WCF, скажем, с пространством имен MyCompany.Services.MyProduct
(фактическое пространство имен больше).
Как часть продукта, я также предоставляю образец веб-сайта С#.NET. Это веб-приложение использует пространство имен MyCompany.MyProduct
.
Во время первоначальной разработки служба была добавлена как ссылка на проект на веб-сайт и используется напрямую. Я использовал шаблон factory, который возвращает экземпляр объекта, который реализует MyCompany.Services.MyProduct.IMyService
. Пока что так хорошо.
Теперь я хочу изменить это, чтобы использовать фактическую ссылку на службу. После добавления ссылки и ввода MyCompany.Services.MyProduct
в текстовое поле пространства имен он генерирует классы в пространстве имен MyCompany.MyProduct.MyCompany.Services.MyProduct. ПЛОХО! Я не хочу менять директивы using
в нескольких местах только потому, что я использую прокси-класс. Поэтому я попробовал добавить пространство имен с global::
, но это не принято.
Обратите внимание, что я еще не удалил исходные ссылки на сборку, и "типы повторного использования" включены, но повторного использования, по-видимому, не было. Тем не менее, я не хочу, чтобы ссылки на сборку отображались на моем веб-сайте, чтобы он работал в любом случае.
Единственное решение, с которым я столкнулся, - это установить пространство имен по умолчанию для моего веб-приложения на MyCompany
(потому что оно не может быть пустым) и добавление служебной ссылки как Services.MyProduct
. Предположим, что клиент хочет использовать мой образец веб-сайта в качестве отправной точки, и они меняют пространство имен по умолчанию на OtherCompany.Whatever
, это, очевидно, нарушит мое обходное решение.
Есть ли хорошее решение этой проблемы?
Подводя итог: я хочу создать служебный прокси-сервер службы в исходном пространстве имен, не ссылаясь на сборку.
Примечание: я видел этот вопрос, но не было решения, которое было бы приемлемым для моего варианта использования.
Изменить: Как предложил Джон Сондерс, я представил некоторые отзывы в Microsoft об этом:
Элемент обратной связи @Microsoft Connect