2009-03-20 9 views
4

ハンドラと呼ばれるHttpHandlerを持っています。これをDLLにコンパイルし、ASP.NETアプリケーションの/ binフォルダに入れます。それから私は.ashxファイルがあります:デフォルトネームスペースを使用するHttpHandler

<% @ webhandler language="C#" class="Handler" %> 

を私ははタイプ「ハンドラ」エラーを作成することはできません取得します。しかし

、私は、いわれのない名前空間にハンドラをラップFOOを言って、それが正常に動作します

<% @ webhandler language="C#" class="foo.Handler" %> 

に.ashxを変更した場合。なぜ、ネームスペースを使用できないのですか。デフォルトのネームスペースです。 Microsoftは、msdn WebサイトのHttpHandlersの多くの例で名前空間を省略しています。

答えて

3

Thiは.NETアセンブリの性質によるものです。任意の参照型またはValueTypeは、名前空間にラップする必要があります。名前空間は論理グループに使用されます。あなたの場合、クラス 'Handler'はユーザ定義の参照型です。どのアセンブリも、ルートに1つまたは複数のルート名前空間を持つことはできますが、ルートに参照型または値型を含めることはできません。実際に、プロジェクトプロパティの[アプリケーション]タブに新しいクラスライブラリプロジェクトを作成すると、クラスライブラリプロジェクトのデフォルトの名前空間を指定するオプションがあります。したがって、プロジェクトで新しいクラスを作成すると、ProjectProperties.Application.DefaultNameSpaceで指定されたこのデフォルトのNameSpaceの周りに新しいクラスがラップされます。

これを実際に見たい場合は、.Net SDKに付属のIL Disassemblarを使用して.Netアセンブリを開いてみてください。

関連する問題