我创建SharePoint应用程序,并正尝试一些新的东西,创造了相当于数据访问,以保持一致性和公约的API。这个对象投射模式在SharePoint中可以接受吗?
我以前没有见过这个,这让我觉得这可能是坏:)
我重载的构造class Post
只采取SPListItem
作为参数。那么我的Post
嵌入式泛型列表,它接受一个SPListItemCollection方法签名。
我循环遍历更有效的for
语句中的项目,这意味着如果我需要添加或修改Post
对象的投射方式,我可以在类定义中为单个源执行此操作。
class Post
{
public int ID { get; set; }
public string Title { get; set; }
public Post(SPListItem item)
{
ID = item.ID;
Title = (string)item["Title"];
}
public static List<Post> Posts(SPListItemCollection _items)
{
var returnlist = new List<Post>();
for (int i = 0; i < _items.Count; i++) {returnlist.Add(new Post(_items[i]));}
return returnlist;
}
}
这使我能够做到以下几点:
static public List<Post> GetPostsByCommunity(string communityName)
{
var targetList = CoreLists.SystemAccount.Posts(); //CAML emitted for brevity
return Post.Posts(targetList.GetItems(query)); //Call the constructor
}
这是一个坏主意?
感谢您的答复。不过,问题。在上述调用中传递给Posts()的SPListItemCollection发生在SpQuery之后。我可以确认被迭代的SPListItemCollection不包含完整列表。我错过了什么,或者您是否错误地评论了这个评论? – Wesley 2012-08-15 18:51:50
看着我的代码,我注意到简洁发出// CAML。我认为我的代码不够清晰,看起来像是在调用所有列表项,并且我理解你在这种情况下的注释。 – Wesley 2012-08-15 18:53:08