【问题标题】:extension methods nested within a class嵌套在类中的扩展方法
【发布时间】:2012-12-07 01:47:05
【问题描述】:

我想知道,当我开始从使用常规助手到越来越多的extension methods 进行一些戏剧性的转变时,他们开始堆积起来,

说我的顶级主命名空间如下:

主命名空间名称为 myname + 年份和当前月份的最后一位

这就是我如何将其组织为辅助命名空间

namespace "myname212" 
{
    namespace DbRelated
    {
        some clasess & methods 
    }

    namespace styling
    {
        same as usual ..
    }

    // .... some more categories and...then

    //the extentions namespace

    namespace CustomExtentions
    {
        // simplest ext class and its first method 
        public static class ToNumber
        {
            public static int Toint(this Textbox TbxToConvrt)
            {
                return Convert.ToInt32(TbxToConvrt.Text);
            }
            //some more of same subject 
        }
    }
}

但是,如果我有一个更通用的类别,它在逻辑上拥有自己的子类别,该怎么办

namespace Extentions
{
    public static class MainCategory
    {
         public static class SubCat1 
         {
             public static some_method();
         }
         public static class SubCat2 
         {
             public static some_method();
         }
    }  
}

上面的层次结构不起作用。

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

nested namespaces 而不是 nested classes ?

这是你做的吗?

【问题讨论】:

  • 为什么不行?是不可编译还是您只是不喜欢/不接受它?
  • 它会编译,但不会作为扩展访问(您是否缺少程序集或......)
  • @abatishchev 它对你有用吗,你试过吗?我错过了什么吗?下面的结构对你有用吗?:namespace-> static class-> static class--> static method(); 从外到内,就像这样对你有用?
  • @LoneXcoder 为什么需要嵌套包含扩展方法的静态类?嵌套命名空间看起来很清楚......甚至保留你的年份命名:namespace Extensions.SomeName2012.January,然后是namespace Extensions.SomeName2012.February等等......所以你只需要添加合适的using
  • 好的,我知道了。您嵌套的不是命名空间而是类。这确实行不通。

标签: c# .net namespaces .net-4.0 extension-methods


【解决方案1】:

您可以嵌套命名空间改为

namespace My.Nested.Namespace.So.Far
{
    public static class BlaExtensions
    {
    }
}

甚至:

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

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

should work too.

【讨论】:

  • 感谢您的回答只是想确保我别无选择
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-10
  • 1970-01-01
  • 2015-03-22
  • 1970-01-01
  • 1970-01-01
  • 2016-08-27
相关资源
最近更新 更多