Возможно псевдоним .NET имен пространства в app.config? - PullRequest
8 голосов
/ 21 июля 2009

ASP.NET имеет функцию, которая позволяет объявлять неявно используемые пространства имен в web.config.

<configuration>
 <system.web>
  <pages>
   <namespaces>
    <add namespace="System.Web.Mvc"/>
   </namespaces>
  </pages>
 </system.web>
</configuration>

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

Аналог этого бита кода, но через конфигурацию:

using MyNamespace = System.Web.Mvc;

edit: мое намерение исходит из таких проектов, как silversprite , целью которых является предоставление идентичного API для XNA для silverlight. Это позволяет вам написать игру XNA один раз, а затем развернуть ее в Интернете с помощью silverlight. Единственная проблема заключается в том, что все версии API-интерфейсов silversprite находятся в другом пространстве имен, поэтому для его использования необходимо использовать ifdef вокруг операторов using. Было бы здорово, если бы можно было просто создать псевдоним пространства имен silversprite, чтобы ваш код не переключался между платформами.

1 Ответ

11 голосов
/ 21 июля 2009

Нет. Пространства имен требуются в время компиляции . Это только сценарии, когда компиляция выполняется «поздно» (как в ASP.NET), где это имеет какой-то смысл.

Что бы даже значило добавить пространство имен во время выполнения, если код уже скомпилирован?

Являетесь ли вы действительно сразу после опции, чтобы не писать кучу директив using в верхней части каждого файла? Если это так, и , если C # поддерживает это, это будет в свойствах проекта (которые касаются компиляции, а не выполнения). Однако C # не поддерживает это - единственные импортированные пространства имен - это те, которые определены директивами using в текущем файле.

Я думаю, В VB есть идея "пространства имен по умолчанию", но в C # определенно нет. Лично я считаю, что это хорошо. (Возможно, вы захотите взглянуть на этот вопрос . Я не знаю, является ли он фактически дубликатом или нет, поскольку ваше намерение на данный момент неясно.)

...