0

汎用ハンドラーを使用して、要求された幅と高さの元の画像のサムネイルを取得しようとしています。しかし、私はいくつかの限られた幅と高さのセットへのリクエストを承認したいと思います。元。18 * 18、98 * 94、117 * 113など。これらの事前定義されたセットからのすべては、不正な要求として扱われます。したがって、これらの事前定義された高さと幅のセットをある種のデータ構造に保存したいと思います。そのため、幅と高さのリクエストを受け取ったときに、これが事前定義されたセットに属しているかどうかを確認できます。そうでない場合は、リクエストを無視できます。次のようなものです。

     if(PreferredWidths.Contains(requestedWidth).Index == PreferredHeights.Contains(requestedHeight).Index)
{
           // Process request.. 
}

これはいくつかのロジックでした、私はそれをコードに変換したいと思います(もっと良いものは何でもありがたいです)。幅と高さのセットを格納するためにどのデータ構造を使用すべきかわかりません。同じ目的で使用できる、より良いアプローチはありますか。偽のユーザーなら誰でも、ハンドラーURLのパラメーターを変更するだけでブラウザーから画像のソースを変更できます(abc.ashx?Id = 123&width = 20&height = 30)。内部的には、サムネイルを作成してディスクに保存し、同じURLを返しています。要求された幅と高さのセットが合法でない場合、私はこのようなことをしたくありません。

4

2 に答える 2

4

System.DrawingにはSize構造体があります。サイズのリストを保存してから、次を使用できます。

var ValidSizes = new List<Size> 
{
    new Size(18, 18),
    new Size(98, 94),
    new Size(117, 113)
};

if(ValidSizes.Any(p => p.Width == requestedWidth && p.Height == requestedHeight))
{
    // Process Request
}
于 2012-10-15T11:49:58.343 に答える
2
IList<Tuple<double, double>> supported = new List<>...


// search usign LINQ
var found = supported.Where(new LambdaComparer<Tuple<double, double>>((s1, s2) =>
     { s1.Item1 == s2.Item1 && s2.Item2 == s2.Item2 }));

イントラウェブのLambdaComparerについては、JohnSkeetのものをお勧めします。

于 2012-10-15T11:51:34.877 に答える