当前位置:  开发笔记 > 编程语言 > 正文

什么是更好,更清洁的方式使用List <T>

如何解决《什么是更好,更清洁的方式使用List<T>》经验,为你挑选了1个好方法。

我正在寻找在我正在开发的几个应用程序中实现一些更好的方法来使用List.我目前的实现看起来像这样.

MyPage.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    BLL.PostCollection oPost = new BLL.PostCollection();
    oPost.OpenRecent();
    rptPosts.DataSource = oArt;
    rptPosts.DataBind();
}

BLL班级

public class Post
{
    public int PostId { get; set; }
    public string PostTitle { get; set; }
    public string PostContent { get; set; }
    public string PostCreatedDate { get; set; }

    public void OpenRecentInitFromRow(DataRow row)
    {
        this.PostId = (int) row["id"];
        this.PostTitle = (string) row["title"];
        this.PostContent = (string) row["content"];
        this.PostCreatedDate = (DateTime) row["createddate"];
    }
}
public class PostCollection : List
{
    public void OpenRecent()
    {
        DataSet ds = DbProvider.Instance().Post_ListRecent();
        foreach (DataRow row in ds.Tables[0].Rows)
        {
            Post oPost = new Post();
            oPost.OpenRecentInitFromRow(row);
            Add(oPost);
        }
    }
}

现在虽然这一切都运行得很好,但我只是想知道是否有任何方法可以改进它,并且只是让它更清洁,不得不使用两个不同的类做我认为可以在一个类或使用中发生的事情一个界面.



1> Jon Skeet..:

首先,我不会从中得到List- 你并不专注于这种行为.

我还建议你可以创建Post不可变的(至少是外部的),并编写一个静态方法(或构造函数)来创建一个基于DataRow的方法:

public static Post FromDataRow(DataRow row)

同样,您可以拥有一个列表方法:

public static List RecentPosts()

返回它们.不可否认,作为某种DAL类中的实例方法可能更好,这将允许模拟等.或者,在Post中:

public static List ListFromDataSet(DataSet ds)

现在,至于使用List它自己 - 你使用的是.NET 3.5吗?如果是这样,你可以使用LINQ使这个更加整洁:

public static List ListFromDataSet(DataSet ds)
{
    return ds.Tables[0].AsEnumerable()
                       .Select(row => Post.FromDataRow(row))
                       .ToList();
}


"不要从列表派生"的+1 - 很少,如果有的话,你想这样做.**赞成继承的组合!**(Effective Java,item 16)
另外,具体来说不是从List 派生的.继承Collection 通常会更好,因为它为您提供了可以覆盖的Add,Remove等方法
推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有