c #: пространство имен приоритет / приоритет?Есть 2 класса с тем же именем - PullRequest
6 голосов
/ 25 марта 2011

У меня есть 2 класса, оба называются одним и тем же «Продуктом», 1 класс мой, а другой принадлежит кому-то другому.

Я получаю ошибку компиляции в коде, так как кажется, что какой-то код пытается использовать Продукт из "моего" класса вместо "их".

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

У меня есть "использование" их класса.

Так как же это исправить, оставить мой префикс или изменить порядок пространств имен ... который должен стоять первым?

Полагаю, это вызывает у меня еще одну проблему ... Если я исправлю эту проблему и мне нужно будет сослаться на свой класс, тогда мне понадобится префикс этого.

Любой совет, как лучше решить эту проблему, был бы очень полезен.

Ответы [ 6 ]

8 голосов
/ 25 марта 2011

Вы можете быть явным в своих декларациях, например.

var myProduct = new MyCompany.MyLibrary.Product();
var otherProduct = new OtherCompany.OtherLibrary.Product();

Вы даже можете использовать следующие :

using myNS = MyCompany.MyLibrary;
...
var myProduct = new myNS.Product();
1 голос
/ 25 марта 2011

Вы также можете использовать директиву псевдонима пространства .

using myProduct = SomeNameSpace.My;
using thierProduct = SomeNameSpace.Thier;
0 голосов
/ 25 марта 2011

После объявления usings, объявляющего два (или одно: только тот, который сталкивается)

/*in the usings*/
using MyProduct = MyCompanyNamespace.Product;
using TheirProduct =TheirCompany.Product;

/*some where in the code*/ 
var myProduct = new MyProduct();
var theirProduct = new TheirProduct();
0 голосов
/ 25 марта 2011

Просто используйте Using Direvctive

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

Если пространства имен и класс абсолютно одинаковы, вам придется использовать псевдоним одного из них. Если пространства имен отличаются, другим вариантом будет использование полного пути класса.

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

Вы можете полностью квалифицировать свои классы, не используя пространства имен:

namespace.Product product = new namespace.Product();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...