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;
}

有了这个函数,只用六行代码重写你的代码:

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循环,它会抛出“索引越界异常”。

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 回答