目前在应用程序中使用枚举作为文件名列表,以便能够使用智能感知并确保文件名是现有文件之一(枚举防止拼写错误并且必须逐字记住每个文件名)。枚举中当前有 107 个文件。为了获得音频文件名,使用了枚举值 ToString() 方法。
现在有一种情况,需要根据数据库调用的结果添加一些文件名。这对于枚举是不可能的,并且需要大量的应用程序重组才能实现(更改所有采用枚举的方法以采用字符串)。
首先应该做什么,或者枚举是这个用例的最佳选择?
我不太确定用例,但一个考虑因素是资源文件。您将获得智能感知,以及能够根据本地化更改文件名的额外好处。
有关示例,请参见此处。
实际上,做到这一点的一种方法是将每个文件简单地列为字符串常量。但这使得添加新内容令人沮丧,如果您想添加新声音,则必须重新编译和分发整个应用程序。
取而代之的是,考虑将您的声音文件列在单个数据文件(也许是 XML?)中。在您的程序中,将数据作为字符串键、字符串值字典导入,其中键是声音的名称,值是文件名。构建一个包装类来保存字典,这样您就可以优雅地处理错误,瞧!您可以访问您的声音,并且您可以从代码本身之外添加和删除声音。
另外,当您调用数据库时,您需要做的就是将额外的声音数据添加到您的字典中。
也许您需要创建一个具有常量成员的静态类。
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。