4

目前在应用程序中使用枚举作为文件名列表,以便能够使用智能感知并确保文件名是现有文件之一(枚举防止拼写错误并且必须逐字记住每个文件名)。枚举中当前有 107 个文件。为了获得音频文件名,使用了枚举值 ToString() 方法。

现在有一种情况,需要根据数据库调用的结果添加一些文件名。这对于枚举是不可能的,并且需要大量的应用程序重组才能实现(更改所有采用枚举的方法以采用字符串)。

首先应该做什么,或者枚举是这个用例的最佳选择?

4

3 回答 3

8

我不太确定用例,但一个考虑因素是资源文件。您将获得智能感知,以及能够根据本地化更改文件名的额外好处。

有关示例,请参见此处。

于 2012-11-02T21:56:03.747 回答
0

实际上,做到这一点的一种方法是将每个文件简单地列为字符串常量。但这使得添加新内容令人沮丧,如果您想添加新声音,则必须重新编译和分发整个应用程序

取而代之的是,考虑将您的声音文件列在单个数据文件(也许是 XML?)中。在您的程序中,将数据作为字符串键、字符串值字典导入,其中键是声音的名称,值是文件名。构建一个包装类来保存字典,这样您就可以优雅地处理错误,瞧!您可以访问您的声音,并且您可以从代码本身之外添加和删除声音。

另外,当您调用数据库时,您需要做的就是将额外的声音数据添加到您的字典中。

于 2012-11-02T21:53:38.673 回答
0

也许您需要创建一个具有常量成员的静态类。

static class FileNames
{
    public const string FirstFileName = "FirstFileName.txt";
    //and so on
}

对于数据库部分(未详细说明并留有猜测空间),您可以使用T4 模板,该模板生成一个类,其中有以上述形式声明的文件名列表。T4 模板可以在设计时使用常规的 ADO .NET 代码进行数据库调用,然后查询的结果可用于输出文件名和常量成员。

发现 T4 非常值得:查看此链接:http: //msdn.microsoft.com/en-us/library/bb126445.aspx

于 2012-11-02T22:37:27.427 回答