1

ソリューション内のすべてのコード ビハインドとクラスで利用できるようにしたい String の拡張メソッドがあります。メソッドは特定のネームスペースにあります。すべてのクラスに名前空間を含めなくても、どこからでもその名前空間にアクセスできるようにしたいと考えています。

Web 構成で「namespaces」タグを使用して、すべての aspx ページに正常に含めましたが、コード ビハインドまたは他の場所でアクセスできるようにはなりません。

それで、どこにでも名前空間を含める同様の方法はありますか?

4

4 に答える 4

1

それで、どこにでも名前空間を含める同様の方法はありますか?

いいえ、残念ながらありません。ルート名前空間の一部に拡張メソッドを配置すると、子名前空間のスコープ内になります。例えば:

namespace Foo
{
    public static class Extensions
    {
        public static void Go(this string value)
        {
            ...
        }
    }
}

Foo.*名前空間で宣言されたすべてのクラス内のスコープになります。したがって、拡張メソッドをプロジェクトと同じ名前のルート名前空間に配置すると、すべてのクラスが子名前空間で自動的に生成されるため (変更しない限り)、どこでも使用できるようになります。

于 2013-08-23T15:10:32.033 に答える
1

拡張クラスを System 名前空間に配置するだけで、すべての String オブジェクトで使用できるようになります。

namespace System
{
    public static class Extensions
    {
        public static void M1(this string value)
        {
            ...
        }
    }
}
于 2013-08-23T15:12:03.467 に答える
0

いいえ、あなたがすることはできません。

namespaceセクションは、web.configこれらの名前空間をマークアップに提供するだけで、コード ビハインドは提供しません。

<configuration>
    <system.web>
        <pages>
            <namespaces>
                <add namespace="System.Data" />
                <add namespace="System.Text"/>
            </namespaces>
        </pages>  
    </system.web>
</configuration>

コード ビハインドのステートメントを使用して名前空間を明示的に追加usingするか、 などの既に含まれている名前空間の 1 つに追加する必要がありますがSystem、これはお勧めできません。

于 2013-08-23T15:12:19.277 に答える
0

名前空間にアクセスする予定のすべてのコード ファイルに using ステートメントを配置する必要があります。「グローバルに含める」ことはできません。

通常、さまざまなユーティリティ、静的クラス、および拡張クラスを、他のプロジェクトがすべて依存している「共通」プロジェクトに配置することをお勧めします。私はこのパターンが何度も再利用されているのを見てきました:

Using YourNameSpace.Common.Utilities;
于 2013-08-23T15:12:26.597 に答える