Директивы C # и проблема пространства имен - PullRequest
2 голосов
/ 17 декабря 2009

У меня проблема здесь. У меня есть библиотека классов , а именно ClLib , и следующие файлы 8 cs .

  • Экспресс (родительский класс)
    - 1E1
    - 1E2
    - 1E3

  • Обычный (родительский класс)
    - 1N1
    - 1N2
    - 1N3

Кроме того, метод также включен в каждый файл 8 классов. Например,

public class 1E1:Express
{
    public int subtractNumExp1E1(int firstNum, int secNum)
    {
        return firstNum - secNum;
    }
}

1E1: Express используется для отображения взаимосвязи между родительским классом (Express) и подклассом (1E1).

Я также создал приложение для Windows в Visual Studio, и мне нужно создать директиву типа «using ClLib.Express.1E1». Как мне это сделать? Я застрял в этой ситуации, когда я хочу изменить пространство имен 1E1 с «пространства имен ClLib» на «пространство имен ClLib.Express.1E1». Произошла ошибка, поскольку пространство имен ClLib уже содержит одно определение для Express.

Большое спасибо и благодарность заранее за все добрые души, которые готовы мне помочь:)

Ответы [ 3 ]

2 голосов
/ 17 декабря 2009

Вы не можете иметь тип и пространство имен с одним и тем же именем ("CILib.Express").

Если вам нужно пространство имен CILib.Express, опция simplest - это перемещение / переименование типа CILib.Express.

Вы также можете иметь вложенные типы. Например, вы можете иметь:

namespace CILib {
    public class Express {
        public class SomeType {}
    }
}

Если речь идет о отдельных файлах:

файл 1:

namespace CILib {
    public partial class Express { 
        // "Express" code
    }
}

файл 2:

namespace CILib {
    public partial class Express {
        public class SomeType {
            // "SomeType" code
        }
    }
}

Однако директивы using относятся только к пространствам имен; Я не думаю, что вы могли бы иметь using CILib.Express, так как это тип, а не пространство имен.

1 голос
/ 17 декабря 2009

В этом случае вам просто нужно удалить пространство имен ClLib и убедиться, что существует ровно одна копия ClLib.Express.1E1

P / S: Вы уверены, что правильным пространством имен является ClLib.Express.1E1? 1E1 - это файл cs, и обычно это класс. Так что вам не нужно писать using ClLib.Express, этого было бы достаточно.

0 голосов
/ 17 декабря 2009

Я думаю, что существует путаница вокруг пространства имен и базового класса.

Пространство имен: ClLib.Express Класс: публичный класс 1E1: Экспресс

Переименуйте ваш базовый класс в ExpressBase, чтобы дифференцировать его.

Если вам нужно сослаться на пространство имен:

с использованием ClLib.Express

Надеюсь, я понял структуру вашего проекта!

...