具有许多常数的Intellisense(嵌套?)

时间:2015-09-09 09:49:13

标签: c# .net const intellisense

场景:有一个字符串常量列表(现在超过100个,将来会更多),其定义如下:

public const string ChildA = "Child A";
public const string ChildASomeParameter = "Some parameter";
public const string ChildASomeOtherParameter = "Some other parameter";
...
public const string ChildB = "Child B"; 
public const string ChildBSomeParameter = "Some different parameter"; 
public const string ChildBSomeOtherParameter = "Some parameter";  // values are not unique
...

问题:在智能感知中使用它并不常见:当需要ChildA时,您可能会获得提供ChildASomeParameter99999的智能感知功能。滚动或完全输入名称显然效率不高。

我想把参数移到嵌套类型中,比如这个

public const string ChildA = "Child A";
public class ChildA
{
    public const string SomeParameter1 = "Some parameter 1";
    public const string SomeParameter2 = "Some parameter 2";
}

但是有一个编译时问题:

  

“MyConstants”类型已包含“ChildA”

的定义

我需要有关如何处理该问题的帮助(想法)。

我的想法:

  • ChildA放入另一个嵌套类型?这会增加开销:ChildA将比其任何参数更常用 using static在这里真正闪耀,必须输入类似Childs.ChildA的内容并不快
  • 重命名?将ChildA重命名为丑陋的_ChildA?或者将嵌套类型重命名为丑陋的东西?什么名字不会难看呢?

也许有人知道更好的方法?

2 个答案:

答案 0 :(得分:2)

如何将Current用于当前课程?

static void Main(string[] args)
{
    System.Console.WriteLine(Constants.ChildA.Current);
    System.Console.WriteLine(Constants.ChildB.SomeOtherParameter);
    System.Console.WriteLine(Constants.ChildA.SomeParameter);

}

public static class Constants
{
    public static class ChildA
    {
        public const string Current = "Child A";
        public const string SomeParameter = "Some parameter";
        public const string SomeOtherParameter = "Some other parameter";
    }

    public static class ChildB
    {
        public const string Current = "Child B";
        public const string SomeParameter = "Some different parameter";
        public const string SomeOtherParameter = "Some parameter";
    }
}

答案 1 :(得分:0)

使用Namespaces

Using Namespaces (C# Programming Guide)

像这样:

namespace N1     // N1
{
  class C1      // N1.C1
  {
      class C2   // N1.C1.C2
      {
      }
  }
  namespace N2  // N1.N2
  {
      class C2   // N1.N2.C2
      {
      }
  }
}