我正在寻找在我正在开发的几个应用程序中实现一些更好的方法来使用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); } } }
现在虽然这一切都运行得很好,但我只是想知道是否有任何方法可以改进它,并且只是让它更清洁,不得不使用两个不同的类做我认为可以在一个类或使用中发生的事情一个界面.
首先,我不会从中得到List
- 你并不专注于这种行为.
我还建议你可以创建Post
不可变的(至少是外部的),并编写一个静态方法(或构造函数)来创建一个基于DataRow的方法:
public static Post FromDataRow(DataRow row)
同样,您可以拥有一个列表方法:
public static ListRecentPosts()
返回它们.不可否认,作为某种DAL类中的实例方法可能更好,这将允许模拟等.或者,在Post中:
public static ListListFromDataSet(DataSet ds)
现在,至于使用List
它自己 - 你使用的是.NET 3.5吗?如果是这样,你可以使用LINQ使这个更加整洁:
public static ListListFromDataSet(DataSet ds) { return ds.Tables[0].AsEnumerable() .Select(row => Post.FromDataRow(row)) .ToList(); }