0

img.Group.Contentsループして値を galleryImage に書き出す最もクリーンな方法は何だと思いますか???? オブジェクト?

galleryImage.TinyImage = new myModel.Image._Img();

galleryImage.TinyImage.Url = img.Group.Contents[0].Url;
galleryImage.TinyImage.FileSize = img.Group.Contents[0].FileSize;
galleryImage.TinyImage.Type = img.Group.Contents[0].Type;
galleryImage.TinyImage.Medium = img.Group.Contents[0].Medium;
galleryImage.TinyImage.Width = img.Group.Contents[0].Width;
galleryImage.TinyImage.Height = img.Group.Contents[0].Height;
galleryImage.TinyImage.Hash = img.Group.Contents[0].Hash;

galleryImage.Thumbnail.Url = img.Group.Contents[1].Url;
galleryImage.Thumbnail.FileSize = img.Group.Contents[1].FileSize;
galleryImage.Thumbnail.Type = img.Group.Contents[1].Type;
galleryImage.Thumbnail.Medium = img.Group.Contents[1].Medium;
galleryImage.Thumbnail.Width = img.Group.Contents[1].Width;
galleryImage.Thumbnail.Height = img.Group.Contents[1].Height;
galleryImage.Thumbnail.Hash = img.Group.Contents[1].Hash;

galleryImage.SmallImage.Url = img.Group.Contents[2].Url;
galleryImage.SmallImage.FileSize = img.Group.Contents[2].FileSize;
galleryImage.SmallImage.Type = img.Group.Contents[2].Type;
galleryImage.SmallImage.Medium = img.Group.Contents[2].Medium;
galleryImage.SmallImage.Width = img.Group.Contents[2].Width;
galleryImage.SmallImage.Height = img.Group.Contents[2].Height;
galleryImage.SmallImage.Hash = img.Group.Contents[2].Hash;

galleryImage.MediumImage.Url = img.Group.Contents[3].Url;
galleryImage.MediumImage.FileSize = img.Group.Contents[3].FileSize;
galleryImage.MediumImage.Type = img.Group.Contents[3].Type;
galleryImage.MediumImage.Medium = img.Group.Contents[3].Medium;
galleryImage.MediumImage.Width = img.Group.Contents[3].Width;
galleryImage.MediumImage.Height = img.Group.Contents[3].Height;
galleryImage.MediumImage.Hash = img.Group.Contents[3].Hash;

galleryImage.LargeImage.Url = img.Group.Contents[4].Url;
galleryImage.LargeImage.FileSize = img.Group.Contents[4].FileSize;
galleryImage.LargeImage.Type = img.Group.Contents[4].Type;
galleryImage.LargeImage.Medium = img.Group.Contents[4].Medium;
galleryImage.LargeImage.Width = img.Group.Contents[4].Width;
galleryImage.LargeImage.Height = img.Group.Contents[4].Height;
galleryImage.LargeImage.Hash = img.Group.Contents[4].Hash;

galleryImage.ExtraLargeImage.Url = img.Group.Contents[5].Url;
galleryImage.ExtraLargeImage.FileSize = img.Group.Contents[5].FileSize;
galleryImage.ExtraLargeImage.Type = img.Group.Contents[5].Type;
galleryImage.ExtraLargeImage.Medium = img.Group.Contents[5].Medium;
galleryImage.ExtraLargeImage.Width = img.Group.Contents[5].Width;
galleryImage.ExtraLargeImage.Height = img.Group.Contents[5].Height;
galleryImage.ExtraLargeImage.Hash = img.Group.Contents[5].Hash;
4

4 に答える 4

5

関数は、繰り返されるタスクを単純化するための優れた方法を提供します。

void ConfigureImage(MyImageType img, int pos) {
    img.Url = img.Group.Contents[pos].Url;
    img.FileSize = img.Group.Contents[pos].FileSize;
    img.Type = img.Group.Contents[pos].Type;
    img.Medium = img.Group.Contents[pos].Medium;
    img.Width = img.Group.Contents[pos].Width;
    img.Height = img.Group.Contents[pos].Height;
    img.Hash = img.Group.Contents[pos].Hash;
}

この関数を使用して、コードを6行で書き直します。

ConfigureImage(galleryImage.TinyImage, 0);
ConfigureImage(galleryImage.Thumbnail, 1);
ConfigureImage(galleryImage.SmallImage, 2);
ConfigureImage(galleryImage.MediumImage, 3);
ConfigureImage(galleryImage.LargeImage, 4);
ConfigureImage(galleryImage.ExtraLargeImage, 5);
于 2012-12-18T02:12:55.160 に答える
1

galleryImage.???オブジェクトはすべて同じタイプだと思いますか?

もしそうなら、それらの配列を宣言します:

var list = new [] { 
   galleryImage.TinyImage, galleryImage.Thumbnail, galleryImage.SmallImage,
   galleryImage.MediumImage, galleryImage.LargeImage, 
   galleryImage.ExtraLargeImage };

次に、forループを使用してそれらをループできます。

for (int i=0; i<6; i++) {
    list[i].Url = img.Group.Contents[i].Url;
    list[i].FileSize = img.Group.Contents[i].FileSize;
    list[i].Type = img.Group.Contents[i].Type;
    list[i].Medium = img.Group.Contents[i].Medium;
    list[i].Width = img.Group.Contents[i].Width;
    list[i].Height = img.Group.Contents[i].Height;
    list[i].Hash = img.Group.Contents[i].Hash;
}
于 2012-12-18T02:12:14.817 に答える
1

おそらく次のようなもの

int ix = 0;
foreach( var dst in new [] { galleryImage.TinyImage, galleryImage.Thumbnail, etc }) {
  src = img.Group.Contents[ix];
  dst.Url = src.Url;
  dst.FileSize = src.FileSize;
  dst.Type = src.Type;
  dst.Medium = src.Medium;
  dst.Width = src.Width;
  dst.Height = src.Height;
  dst.Hash = src.Hash;
  ix++;
}
于 2012-12-18T02:13:48.623 に答える
0

@Blorgbeardの回答に基づいて、これが私の最終的なコードです。imgType配列の長さが不明になるため、少し変更する必要がありました。ループを使用するforと、「Index Out of Bounds Exception」がスローされます。

var imgType = new[] {
    galleryImage.TinyImage = new SmugMugGalleryModel.Image._Img(),
    galleryImage.Thumbnail = new SmugMugGalleryModel.Image._Img(),
    galleryImage.SmallImage = new SmugMugGalleryModel.Image._Img(),
    galleryImage.MediumImage = new SmugMugGalleryModel.Image._Img(),
    galleryImage.LargeImage = new SmugMugGalleryModel.Image._Img(),
    galleryImage.ExtraLargeImage = new SmugMugGalleryModel.Image._Img(),
    galleryImage.TwoExtraLargeImage = new SmugMugGalleryModel.Image._Img(),
    galleryImage.ThreeExtraLargeImage = new SmugMugGalleryModel.Image._Img(),
    galleryImage.OriginalImage = new SmugMugGalleryModel.Image._Img(),
};

var count = 0;
foreach (var i in img.Group.Contents)
{
    imgType[count].Url = i.Url;
    imgType[count].FileSize = i.FileSize;
    imgType[count].Type = i.Type;
    imgType[count].Medium = i.Medium;
    imgType[count].Width = i.Width;
    imgType[count].Height = i.Height;
    imgType[count].Hash = i.Hash;
    count++;
}
于 2012-12-18T06:38:08.993 に答える