4

現在、アプリケーションでファイル名のリストに列挙型を使用して、インテリセンスを使用し、ファイル名が既存のファイルの1つであることを確認します(列挙型はタイプミスを防ぎ、各ファイル名を逐語的に覚える必要があります)。現在、列挙型には107個のファイルがあります。オーディオファイル名を取得するには、列挙値ToString()メソッドを使用します。

現在、データベース呼び出しの結果に基づいていくつかのファイル名を追加する必要がある状況があります。これは列挙型では不可能であり、実装するには多くのアプリケーションの再構築が必要になります(列挙型を使用して文字列を取得するすべてのメソッドを変更します)。

そもそも何をすべきだったのでしょうか、それとも列挙型がこのユースケースに最適なオプションでしょうか?

4

3 に答える 3

8

ユースケースはよくわかりませんが、考慮すべき点の1つはリソースファイルです。インテリセンスが得られ、ローカリゼーションごとにファイル名を変更できるという追加のボーナスが得られます。

例については、こちらをご覧ください。

于 2012-11-02T21:56:03.747 に答える
0

これを行う1つの方法は、実際、すべてのファイルを文字列定数としてリストすることです。しかし、それでは新しいコンテンツを追加するのが面倒になります。新しいサウンドを追加したい場合は、アプリケーション全体を再コンパイルして配布する必要があります。

その代わりに、サウンドファイルを単一のデータファイル(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 に答える