Есть ли способ сгруппировать директивы using в отдельный файл? - PullRequest
1 голос
/ 26 августа 2010

Скажем, у вас есть котельная плита с использованием утверждений. Скажите что-то вроде этого:

#if !NUNIT
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Category = Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute;
#else
using NUnit.Framework;
using TestClass = NUnit.Framework.TestFixtureAttribute;
using TestMethod = NUnit.Framework.TestAttribute;
using TestInitialize = NUnit.Framework.SetUpAttribute;
using TestCleanup = NUnit.Framework.TearDownAttribute;
using TestContext = System.Object;
#endif

(Это для моего кода модульного тестирования). Если я не хочу помещать это в начало каждого файла, в котором есть модульные тесты, есть ли способ настроить уровень косвенности здесь?

Не думаю, что это сработает, но вот пример того, о чем я думаю:

Создайте файл с именем NUnitCompatability.cs и поместите в него вышеуказанный код. Затем добавьте using NUnitCompatability ко всем моим файлам модульных тестов. Это будет работать в Delphi, но не в C # (я думаю). Но есть ли другой способ получить такую ​​функциональность?

Ответы [ 3 ]

4 голосов
/ 26 августа 2010

Нет, это невозможно.

Вы, вероятно, думаете о using директивах, как если бы они были похожи на #include в C. Это не так.

Директива using только указывает компилятору, в каких пространствах имен искать типы, используемые в конкретном файле.Поэтому вы также не можете хранить их в отдельном файле.

Я бы не стал помещать директивы условного компилятора в мой код для директив using.Почти нет накладных расходов, связанных с неиспользованными using с во время компиляции (пространство поиска немного больше) и без накладных расходов вообще во время выполнения .

2 голосов
/ 26 августа 2010

Если у вас есть определенный набор операторов using, который вы хотели бы использовать для классов модульного тестирования, кажется, что это будет хорошей причиной для создания нового шаблона специально для этой цели.Вы не ограничены типами файлов, которые предоставляет VS - вы можете расширить их, чтобы создать свой собственный, в котором вы можете поместить свой собственный выбор использования операторов.Это может занять слишком много времени, чтобы описать процесс здесь, поэтому проверьте MSDN здесь:

http://msdn.microsoft.com/en-us/library/6db0hwky(v=VS.100).aspx

2 голосов
/ 26 августа 2010

Нет встроенной поддержки для этого в C #.Препроцессор C # преднамеренно является очень ограниченным инструментом и не поддерживает операции в стиле #include, где вы можете сделать один файл из двух.

Да, для таких простых случаев, как этот, это может быть немного неприятно.Но это перевешивает зло, которое многие люди совершили и продолжают совершать с препроцессором C ++.

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