【发布时间】:2011-05-17 04:59:27
【问题描述】:
我正在创建一个查找类,因此将在所有项目中使用一个常量值。 问题是,有几种解决方案可以创建这样的东西。我可以创建一个包含枚举、结构或常量的类,或者为每个“对象”创建一个类。我想知道什么是最好的解决方案。
首先我想这样做:
public static class Defines
{
public enum PAGELAYOUT_NAMES
{
STANDARD = "Standard"
}
}
但我个人不太喜欢在枚举中使用字符串。 另一种选择是使用结构体,如果你看到代码就更难看了:
public static class Defines
{
public struct PAGELAYOUT_NAMES
{
public static string STANDAARD = "Standaard";
}
}
这看起来更好一些,但是当有很多选项时可能会令人困惑:
public static class Defines
{
public const string PAGELAYOUT_NAMES_STANDARD = "Standard";
}
在输入这篇文章时,我认为这将是最好/干净的选择:
public static class PageLayout
{
public const string STANDARD = "Standard";
}
还有其他建议吗? 用几个只定义一些常量的类填充项目在我看来像是很多开销和混乱。
编辑 在原始上下文中不是很清楚,但查找值不仅限于字符串。以下一些非常好的建议只有在您只使用字符串时才有可能,但也需要支持 Int、DateTime 和其他类型。从这里的答案中得到了一些不错的想法,我将尝试哪个最适合我当前的项目。
最终实施的解决方案 感谢以下建议,我实现了这样的查找类:
internal class Base<T>
{
internal T Value{ get; private set;}
internal Base(T value)
{
Value = value;
}
}
public class PageLayout
{
public static string Standard { get { return new Base<string>("Standard").Value; } }
}
这是基于下面给出的答案。 原因是因为现在我也可以将它用于非字符串和整数,这对于带有描述和资源文件的枚举来说是不可能的,即使这对我来说会更干净。
【问题讨论】:
标签: c# dictionary constants lookup