Как узнать, был ли тип уже объявлен в другом исходном файле в C #? - PullRequest
0 голосов
/ 02 июля 2011

У меня есть исходный файл в C #, который содержит все типы misc для проекта в их собственном пространстве имен.Пример:

#define HELPER_FILE

using System;

namespace Helper
{
    public struct NormalBalance : INormalType
    {
        public int Position { get; set; }
        public float Normal { get; set; }
    }

    ...

}

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

Например:

using System;

namespace DataPump
{
    public class Pumper
    {
        private Helper.NormalBalance[] norm;

        ...
    }

    ...

}

Но этот код зависит от предыдущего файла, содержащего тип Helper.NormalBalance.Я хочу, чтобы метод синхронизировал файлы так, чтобы один знал о существовании другого, как в C ++, где мы могли бы использовать директиву #define в файле, который объявляет тип, и если файл клиента не видел определенный токен, онусловно скомпилирует тип следующим образом:

(следующий код C ++)

    class Pumper
    {

    private:

#ifndef HELPER_FILE
        struct NormalBalance
        {
            int Position;
            float Normal;
        }

        NormalBalance[] norm;

#else

        Helper.NormalBalance[] norm;

#endif

        ...
    }

    ...

}

К сожалению, область действия директивы #define в C # - это только файл, в котором она была объявлена.Есть ли способ сделать это в C #?Мне нужно знать, включен ли файл в проект или, по крайней мере, тип был определен ранее, а если нет, определить его снова.

Ответы [ 2 ]

3 голосов
/ 02 июля 2011

В .NET Framework, если вы хотите поделиться библиотекой типов, я бы рекомендовал объединить их в один проект. При сборке он становится сборкой, на которую можно ссылаться, как и любой другой сборкой. Определить директивы используются для разных целей и редко так. Они менее распространены, чем в разработке C ++.

0 голосов
/ 02 июля 2011

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

Но не делайте этого.Гораздо проще и удобнее встроить исходный код в сборку и совместно использовать все типы.Попытка разорвать порции приведет к большим трудностям для вас, и интеграция двух сборок, в которых используются фрагменты встроенного кода, станет кошмаром, как только пересечутся порции.Вы просто не хотите такой головной боли для вас.

...