2

多くの場合、サーバー上の別のファイルを参照する必要があります。それが単なる画像であろうと、別の ASP ページであろうと。例えば:

 if (success)
 {
    img1.ImageUrl = "RightArrow.jpg"
 }

ここでの問題は、誰かが誤って文字列 "RightArrow.jpg" を "RghtArrow.jpg" に変更しても、コンパイル時エラーが発生しないことです。また、実行時エラーに気付くまでに時間がかかる場合があります。

ここにベストプラクティスはありますか?もちろん、そのための独自の小さなメカニズムを構築することもできます...しかし、組み込みの何かがあるかどうかはわかりません。

おそらく強く型付けされたもの:

img1.ImageUrl = Images.RightArrow;
4

3 に答える 3

2

写真の名前のリストを保持できますか?

List<string> CollectionPictureUri = new List<string>(); 
CollectionPictureUri.Items.Add("RightArrow.jpg"); 

if (success)
 {
    img1.ImageUrl = CollectionPictureUri[0]; 
 }

または、マップを使用する場合、キーは次のようになります[RightArrow]

次に、コードの 1 つのブロックですべての項目を初期化し、それらが 1 か所で正しいことを確認できます。

編集:アサートを使用して、文字列が正しい名前に解決されることを検証することもできます。http://msdn.microsoft.com/en-us/library/system.diagnostics.debug.assert%28v=vs.110%29.aspx

他にも役立つテスト手法があります。Visual Studio を使用すると、このようなエラーが解決されるまでコードのビルドを防ぐことができます。

于 2012-10-09T20:05:01.360 に答える
2

設定を使用しないのはなぜですか? そうした場合、コードは厳密に型指定されます。たとえば、次のようになります。

img1.ImageUrl = Settings.Default.Images.RightArrow

これらのリソースの数が限られている場合、再コンパイルせずにパス/名前を変更することもできるため、これは良い解決策になる可能性があります...

于 2012-10-09T20:04:06.667 に答える
1

いつでもT4テンプレートを使用して、実際に存在するファイルの定数を持つクラスを生成できます。これは、T4MVCテンプレートが/Contentディレクトリのスクリプトとコンテンツに対して行うことと似ています。実行時にそれらのディレクトリをスキャンし、定数を作成します。

于 2012-10-09T20:06:51.987 に答える