Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 嵌套在类中的扩展方法_C#_.net_Namespaces_.net 4.0_Extension Methods - Fatal编程技术网

C# 嵌套在类中的扩展方法

C# 嵌套在类中的扩展方法,c#,.net,namespaces,.net-4.0,extension-methods,C#,.net,Namespaces,.net 4.0,Extension Methods,我想知道的是,当我开始从使用常规助手转向越来越多的扩展方法时,它们开始堆积起来 假设我的顶级主命名空间如下所示: 主名称空间名称是myname+年份和当前月份的最后一位数字 这就是我如何将其组织为助手命名空间的方式 名称空间“myname212” { 命名空间DbRelated { 一些分类和方法 } 命名空间样式 { 和往常一样。。 } //…更多的类别和…然后 //扩展名称空间 命名空间自定义扩展 { //最简单的ext类及其第一个方法 公共静态类ToNumber { 公共静态int-Toi

我想知道的是,当我开始从使用常规助手转向越来越多的扩展方法时,它们开始堆积起来

假设我的顶级主命名空间如下所示:

主名称空间名称是myname+年份和当前月份的最后一位数字

这就是我如何将其组织为助手命名空间的方式

名称空间“myname212”
{
命名空间DbRelated
{
一些分类和方法
}
命名空间样式
{
和往常一样。。
}
//…更多的类别和…然后
//扩展名称空间
命名空间自定义扩展
{
//最简单的ext类及其第一个方法
公共静态类ToNumber
{
公共静态int-Toint(此文本框为TbxToConvrt)
{
返回Convert.ToInt32(TbxToConvrt.Text);
}
//还有一些相同的主题
}
}
}
但是,如果我有一个更一般的类别,它有自己的子类别在逻辑上呢

命名空间扩展
{
公共静态类MainCategory
{
公共静态类
{
公共静态some_方法();
}
公共静态类
{
公共静态some_方法();
}
}  
}
上面的层次结构将不起作用

那么,如果我想建立更多的类别,我只能通过

嵌套名称空间
而不是
嵌套类

您就是这么做的吗?

您可以嵌套名称空间:

甚至:

namespace My.Nested.Namespace
{
    public static class FooExtensions
    {
    }

    namespace So.Far
    {
        public static class BlaExtensions
        {
        }
    }
}

.

为什么不起作用?是不可编译的,还是您不喜欢/不接受它?它将进行编译,但不会作为扩展进行访问(您是否缺少程序集或…)@abatishchev它对您有用吗,您尝试过吗?我错过什么了吗?下面的结构作为扩展适用于您:
namespace->static class->static class-->static method()从外到内,就像这样适合你吗?@LoneXcoder为什么需要嵌套包含扩展方法的静态类?嵌套名称空间看起来非常清楚…甚至可以保留年份名称:
名称空间扩展。SomeName2012.January
,然后
名称空间扩展。SomeName2012.Junuary
等等…所以您只需要使用
添加合适的
,好的,我现在明白了。嵌套的不是名称空间而是类。谢谢你的回答,我只是想确定我别无选择
namespace My.Nested.Namespace
{
    public static class FooExtensions
    {
    }

    namespace So.Far
    {
        public static class BlaExtensions
        {
        }
    }
}