.NET несколько пространств имен для одного класса - PullRequest
18 голосов
/ 27 сентября 2010

Возможно ли, чтобы один класс находился в двух пространствах имен и как я могу это сделать?

Чтобы уточнить: у нас есть библиотека классов (скажем, корневое пространство имен - classLib1), которая выроссо временем (больше классов) и я хочу логически сгруппировать классы в разные пространства имен.Однако некоторые из старых классов должны быть сгруппированы в эти новые пространства имен (например, classLib1.section1), и это нарушит унаследованный код в других сборках, которые используют эту библиотеку классов.Так что я хочу иметь возможность ссылаться на класс, используя оба пространства имен, пока мы не сможем свернуть старые.

Я не могу найти никакой информации по этому вопросу, что говорит о том, что есть причина, по которой людине хочу этим заниматься!?!

Ответы [ 3 ]

22 голосов
/ 27 сентября 2010

Нет, нет никакого способа дать одному классу два имени (пространство имен на самом деле является просто частью имени класса).

В качестве обходного пути, вы можете переместить классы на новое место,и создайте вокруг них тонкие обертки в старом месте (Facade Pattern).Конечно, лучшим решением было бы переместить классы и соответствующим образом исправить устаревший код.

4 голосов
/ 17 февраля 2011

Переадресация типа была введена в .net 2.0, что означает, что вы можете использовать атрибут TypeForwardedToAttribute, чтобы указать, что тип, который изначально присутствовал в AssemblyX, теперь должен быть найденв AssemblyY.

Я вполне уверен, что это уместно / применимо, только если вы разделяете на несколько сборок, но стоит знать, даже если нет.

4 голосов
/ 27 сентября 2010

В качестве обходного пути вы можете «использовать» класс во втором пространстве имен, когда вам это нужно:

namespace classLib1.section2
{
    public myBigClass
    {

и в каждый файл, который использует его в старом пространстве имен, можно добавить одну строку

namespace classLib1.section1
{
    using myBigClass = classLib1.section2.myBigClass;

как временное исправление, пока вы не исправите это правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...