Как создать класс в пространстве имен с тем же именем, которое является частью другого пространства имен в библиотеке классов .net - PullRequest
2 голосов
/ 24 марта 2010

хорошо ... мне сложно объяснить, поэтому я покажу класс из одного пространства имен и отдельного пространства имен ...

Company.Product.Domain
(это представляет класс, который содержит методы, специфичные для этого класса, я назвал его «Домен», чтобы вы могли видеть, как я использую одно и то же имя в отдельном пространстве имен

Company.Product.Domain.Data.Contracts
(это пространство имен будет для всех контрактов данных, которые будут использоваться в службе WCF)

Если я нахожусь в классе Company.Product.Domain и пытаюсь использовать классы в Company.Product.Domain.Data.Contracts, когда я пытаюсь это напечатать, я добираюсь до Company.Product.Domain и больше не отображаю intellisense. Это также показывает, что эта ссылка является классом, а не позволяет мне попасть в пространство имен.

У меня есть Company.Product.Domain.Data.Contracts, указанный в моем классе Company.Product.Domain.

Возможно ли иметь пространство имен Company.Product с классом внутри него, а также другое пространство имен Company.Product.Domain.Data.Contracts? Если да, то как?

Спасибо

Ответы [ 2 ]

5 голосов
/ 24 марта 2010

Да, это возможно. Тем не менее, вы должны избегать этого, как чума. Все это усложняет намного .

Эрик Липперт недавно написал серию постов в блоге на эту тему. По общему признанию это не вполне та же самая проблема - он говорит о Foo.Bar.Bar (где Foo.Bar - пространство имен, а Bar - класс), но я полагаю, что вы столкнетесь со многими из тех же проблем , В самом деле, я думаю, что вы можете сделать их на 1010 * хуже , чем сценарий, который он описывает. Пожалуйста, не делай этого.

0 голосов
/ 25 марта 2010

Вы можете псевдоним пространство имен вашей Company.Product.Domain.Data.

Так в вашем доменном классе, вместо

using Company.Product.Domain.Data;

попробуйте что-то вроде

using myData = Company.Product.Domain.Data;
namespace Company.Product
{
  class Domain
  { ...
    myData::Data.method();
  }
}

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

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