4

Handler と呼ばれる HttpHandler を DLL にコンパイルし、ASP.NET アプリの /bin フォルダーに配置しました。次に、.ashx ファイルがあります。

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

しかし、タイプ「ハンドラー」エラーを作成できません。

ただし、不要な名前空間で Handler をラップすると、fooと言って、.ashx を次のように変更します。

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

それは正常に動作します。デフォルトの名前空間である名前空間を使用できないのはなぜですか? Microsoft は、msdn Web サイトの HttpHandlers の多くの例で名前空間を省略しています。

4

1 に答える 1

3

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

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

于 2009-04-14T12:37:36.110 に答える