9

ASP.NET には、暗黙的に使用される名前空間を web.config で宣言できる機能があります。

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

他の .net 環境 (winform、コンソール アプリ、特に Silverlight アプリケーションなど) の構成にこの機能があるかどうか知りたいです。 その場合、フォローアップの質問は、上記の構成で名前空間にエイリアスを設定できるかどうかです。

このコードの類似物ですが、構成を介して:

using MyNamespace = System.Web.Mvc;

編集: 私の意図は、 Silverlight用の XNA に同一の API を提供することを目的とした、silverspriteなどのプロジェクトを見ることから来ています。これにより、XNA ゲームを一度作成してから、Silverlight を使用して Web にデプロイできます。唯一の問題は、すべての Silversprite バージョンの API が異なる名前空間にあることです。そのため、それを使用するには、using ステートメントの周りに ifdef を使用する必要があります。プラットフォーム間でコードを変更する必要がないように、単純にシルバースプライトの名前空間にエイリアスを設定できれば素晴らしいことです。

4

1 に答える 1

12

いいえ。名前空間はコンパイル時に必要です。これが意味をなすのは、(ASP.NET のように) コンパイルが "遅く" 行われるシナリオだけです。

コードが既にコンパイルされている場合、実行時に名前空間を追加することは何を意味するのでしょうか?

各ファイルの先頭に一連のディレクティブを書くことを避けるオプションの直後ですか? usingもしそうなら、そしてC#がそれをサポートしていれば、それはプロジェクトのプロパティにあります(これは実行ではなくコンパイルに関するものです) ただし、C#はそれをサポートしていません。インポートされた名前空間はusing、現在のファイルのディレクティブによって指定されたものだけです。

VB には「既定の名前空間」という概念があると思いますが、C# にはまったくありません。個人的には良いことだと思います。(この質問もご覧になることをお勧めします。現時点ではあなたの意図が明確ではないため、それが事実上重複しているかどうかはわかりません。)

于 2009-07-21T13:26:45.217 に答える