我已經初始化了一個普通串列,我想從Sharepoint中保存所有的檔案和檔案夾。
List<object> filesAndFolders = new List<object> ()。
我已經從SharePoint加載了所有檔案和檔案夾,并將它們添加到串列中,現在我想訪問FieldValues,但是當我試圖在串列中迭代時,我無法訪問檔案或檔案夾,因為它被保存為一個物件{Microsoft.Sharepoint.Client.File}或Folder.
。foreach(var item in filesAndFolders){
//getFiledValues here
item.ListItemAllFields.FiledValues . .
}
我遇到一個錯誤,說 item.ListItemAllFields.FiledValues 不存在。我怎樣才能解決這個問題,并能夠在一個串列中保存檔案和檔案夾? 謝謝你!
uj5u.com熱心網友回復:
你可以像這樣在運行時檢查物件的型別:
List<object> filesAndFolders = new List<object>()。
foreach (var item in filesAndFolders)
{
if (item is Microsoft.Sharepoint.Client.File)
{
var fileItem = item as Microsoft.Sharepoint.Client.File。
//對fileItem做一些事情。
}
else if (item is Microsoft.Sharepoint.Client.Folder)
{
var folderItem = item as Microsoft.Sharepoint.Client.Folder。
//對folderItem做一些事情。
}
else
{
// Oops, some other object type ?
}
盡管由于公司的防火墻,我無法訪問@Fildor的fiddle,但我相信他或她建議采用以下一種更緊湊的形式:
foreach (var item in filesAndFolders)
{
if (item is Microsoft.Sharepoint.Client.File fileItem)
{
//對fileItem做一些事情。
}
else if (item is Microsoft.Sharepoint.Client.Folder folderItem)
{
//對folderItem做一些事情。
}
else //do stuff with folderItem }
{
// Oops, some other object type ?
}
或者這樣
foreach(var item in filesAndFolders)
{
switch ( item)
{
case File fileItem:
//對fileItem做一些事情。
break;
case Folder folderItem:
//do stuff with folderItem.
break;
default:
// Oops, some other object type.
break。
}
這在c#7.0版本中成為可能。
uj5u.com熱心網友回復:
在你的串列中使用ClientObject作為一個型別。
usingMicrosoft.SharePoint.Client.ClientObject;
List<ClientObject> filesAndFolders = new List<ClientObject>()。
foreach(var item in filesAndFolders){
//getFiledValues here
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/328657.html
標籤:
上一篇:消費者沒有消費資訊服務總線佇列
