【问题标题】:asp.net - pass in rows to methodasp.net - 将行传递给方法
【发布时间】:2010-12-10 12:44:48
【问题描述】:

我在 c# 中有这样的方法。

public void Save(int id)
{
   SaveImage("first title", "first.jpg", true);
   SaveImage("second title", "second.jpg", false);
   SaveImage("third title", "third.jpg", false);
}

所以基本上我想做的就是让这个动态化,所以当我调用 Save() 方法时,我可以指定我想要保存的内容。请记住,我可能想多次调用 SaveImage 并设置值。

我研究了 DTO(数据传输对象),但想知道是否有更简单的方法可以做到这一点。我猜它可能是传递给 Save 方法的数组,然后是一个 for each 循环,就像这样..

foreach 数组中的项 { SaveImage(项目[0],项目[1],项目[2]); }

如果有人有任何想法,那就太好了。

提前致谢

汤姆

【问题讨论】:

  • 为什么不直接打电话给SaveImage呢?你真正想做什么?关于“保存什么”的信息是否应该以某种方式来自用户? SaveImage 的参数是什么意思?
  • 通常我想直接调用 Save 但该方法内部还有其他代码在处理图像时实际上应该只运行一次。我不想多次处理同一张图像。基本上我受到当前方法的限制。无论如何感谢您的帮助:-)

标签: c# asp.net arrays dto rows


【解决方案1】:

怎么样:

    public void Save(int id, IEnumerable<ImageInfo> images)
    {
        foreach (var image in images)
        {
            SaveImage(image.Title, image.Name, image.Flag);
        }
    }

ImageInfo 在哪里:

    public class ImageInfo
    {
        public String Title { get; set; }
        public String Name { get; set; }
        public Boolean Flag { get; set; }
    }

可以这样使用:

    public void TestSave()
    {
        Save(0, new ImageInfo[] { 
            new ImageInfo() { Title = "first title", Name = "first.jpg", Flag = true },
            new ImageInfo() { Title = "second title", Name = "second.jpg", Flag = false },
            new ImageInfo() { Title = "third title", Name = "third.jpg", Flag = false },
        });
    }

【讨论】:

  • 这就是我之前看到的。老实说,这似乎是一个不错的选择。 Save() 位于一个类中,而 TestSave() 位于后面的页面代码中。我唯一不明白的是将 ImageInfo 类放在哪里。我不想为此创建一个新的类文件。你有什么建议吗?
  • 好吧,你不能硬编码这些值。您在项目中从哪里获得这些值?您可以改用该类型。在您的项目中创建这样的DTO 确实没有害处。因为它只是一个DTO,与Business Logic无关。
  • 嗯,好的。我喜欢让你看到的东西保持整洁,但如果它与业务逻辑无关,那就没关系。我将使用它来保存具有用户文本指定的位置、名称等的图像。感谢您对此的帮助。
猜你喜欢
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
  • 2015-11-04
  • 2011-01-01
  • 2021-04-25
  • 2014-06-03
  • 2011-12-07
  • 1970-01-01
相关资源
最近更新 更多