1

我有一个 String 的扩展方法,我希望在我的解决方案中的每个代码和类中都可以使用它。该方法位于特定的命名空间中。我希望在任何地方都可以访问该命名空间,而不必将其包含在每个类中。

我已经使用 web 配置中的“命名空间”标签成功地将它包含在每个 aspx 页面上,但这并不能使它在后面或其他地方的代码上可以访问。

那么,是否有类似的方法可以在任何地方包含命名空间?

4

4 回答 4

1

只需将您的扩展类放入 System 命名空间,它将可用于每个 String 对象。

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

那么,是否有类似的方法可以在任何地方包含命名空间?

不,恐怕没有。如果您将扩展方法放在某些根命名空间中,那么它将在子命名空间的范围内。例如:

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

将在Foo.*命名空间中声明的所有类的范围内。因此,您可以将扩展方法放在与您的项目同名的根命名空间中,然后它将随处可用,因为所有类都是在子命名空间中自动生成的(除非您更改它)。

于 2013-08-23T15:10:32.033 回答
0

你不能。

namespace部分web.config仅将这些名称空间提供给标记,但不提供代码隐藏。

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

您必须通过using代码隐藏中的语句显式添加名称空间或添加到已包含的名称空间之一,例如System,但不建议这样做。

于 2013-08-23T15:12:19.277 回答
0

您将在打算访问名称空间的每个代码文件上放置一个 using 语句,您不能“全局包含”。

通常,将您的各种实用程序、静态类和扩展类放在您的其他项目都依赖的“公共”项目中是一种很好的形式。我已经看到这种模式重复使用了很多:

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