gpt4 book ai didi

c# - 什么是更好、更干净的使用 List 的方法

转载 作者:太空狗 更新时间:2023-10-29 17:33:01 25 4
gpt4 key购买 nike

我希望在我正在开发的几个应用程序中实现一些更好的方法来使用 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<Post>
{
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);
}
}
}

现在虽然这一切都很好,但我只是想知道是否有任何方法可以改进它,只是让它更干净,必须使用两个不同的类来完成我认为可以在一个类中发生的事情类或使用接口(interface)。

最佳答案

一方面,我不会派生自 List<T> - 你并没有真正专注于行为。

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

public static Post FromDataRow(DataRow row)

同样你可以有一个列表方法:

public static List<Post> RecentPosts()

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

public static List<Post> ListFromDataSet(DataSet ds)

现在,关于List<T>的用途本身 - 您使用的是 .NET 3.5 吗?如果是这样,您可以使用 LINQ 使它变得相当整洁:

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

关于c# - 什么是更好、更干净的使用 List<T> 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2905027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com