场景:有一个字符串常量列表(现在超过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
?或者将嵌套类型重命名为丑陋的东西?什么名字不会难看呢?也许有人知道更好的方法?
答案 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
{
}
}
}