代码之家  ›  专栏  ›  技术社区  ›  Pawel Krakowiak

从页面方法返回自定义对象列表的快速方法,无需单独的BLL

  •  0
  • Pawel Krakowiak  · 技术社区  · 16 年前

    我使用jQuery从页面方法检索JSON对象。我有一个使用亚音速的DAL,如果我返回从亚音速生成的类创建的对象,我将阻塞管道。:)你知道,所有的公共属性都会被序列化。我不想为这个应用程序设置一个单独的业务层,因为它很小,主要用于读取操作,而另一个层似乎是一个多余的功能。为了避免下载一些亚音速膨胀的对象(可能还有敏感信息)并避免构建单独的层,我尝试返回一个对象列表,如下所示:

    [WebMethod]
    public static List<object> GetFiles()
    {
        FileCollection collection = DB
            .Select()
            .From(DataAccess.File.Schema)
            .ExecuteAsCollection<FileCollection>();
    
        List<object> files = new List<object>(collection.Count);
    
        foreach (DataAccess.File file in collection)
        {
            files.Add(new {
                              file.FileId,
                              file.ApplicantFirstName,
                              file.ApplicantLastName,
                              file.UploadDate
                          }
            );
        }
    
        return files;
    }
    

    [{"FileId":1,"ApplicantFirstName":"Paweł","ApplicantLastName":"Krakowiak","UploadDate":"\/Date(1235656448387
    )\/"}]
    

    这是一个好方法吗?我担心 List<object> -是不是比回来更糟糕,比如说 List<SomeDomainObject

    这是.NET2.0,我不能使用3.5功能。至少匿名类型可以工作。。。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Mitchel Sellers    16 年前

    最大的建议可能是将其设置为“集合”而不是列表,但对于一个简单的webservice返回,这并没有什么大不了的,因为该建议通常适用于对象仍位于.NET程序集中的环境。

    我认为它也很容易阅读。

        2
  •  1
  •   Ken Browning    16 年前

    List<object> 而不是 List<SomeDomainObject> 在这种情况下,在调用 GetFiles 方法直接来自.net代码。

        3
  •  0
  •   Pawel Krakowiak    16 年前