C#, метод создает список, но не тип списка?
Исходя из PHP, я не привык назначать или возвращать определенные типы, потому что PHP на самом деле не волнует. Но возвращаясь к миру Java и C#, эти языки заботятся, когда вы говорите, передайте мне этот тип, он ожидает этот тип. Итак, что я делаю неправильно и как я могу создать это, чтобы иметь тип SPList
У меня есть очень основные функции, такие как:
protected void createNewList(SPFeatureReceiverProperties properties)
{
Dictionary<string, List<AddParams>> param = new Dictionary<string, List<AddParams>>();
// Create the keys
param.Add("Name", new List<AddParams>());
param.Add("Type", new List<AddParams>());
param.Add("Description", new List<AddParams>());
// Set the values
param["Name"].Add(new AddParams { type = SPFieldType.Text, required = true });
param["Type"].Add(new AddParams { type = SPFieldType.Text, required = true });
param["Description"].Add(new AddParams { type = SPFieldType.Text, required = true });
// Create the really simple List.
new SPAPI.Lists.Create(properties, param, "Fake List", "Sample Description", SPListTemplateType.GenericList, "Sample View Description");
}
Это создаст вам список, список SharePoint 2010 после активации веб-части. имя Fake List, и мы видим, что передаем несколько столбцов с их уважаемыми параметрами. Давайте посмотрим на это SPAPI.Lists.Create
метод:
public Create(SPFeatureReceiverProperties properties, Dictionary<string, List<AddParams>> columns,
string name, string description, SPListTemplateType type, string viewDescription)
{
SPSite siteCollection = properties.Feature.Parent as SPSite;
if (siteCollection != null)
{
SPWeb web = siteCollection.RootWeb;
Guid Listid = web.Lists.Add(name, description, type);
web.Update();
// Add the new list and the new content.
SPList spList = web.Lists[name];
foreach(KeyValuePair<string, List<AddParams>> col in columns){
spList.Fields.Add(col.Key, col.Value[0].type, col.Value[0].required);
}
spList.Update();
//Create the view? - Possibly remove me.
System.Collections.Specialized.StringCollection stringCollection =
new System.Collections.Specialized.StringCollection();
foreach (KeyValuePair<string, List<AddParams>> col in columns)
{
stringCollection.Add(col.Key);
}
//Add the list.
spList.Views.Add(viewDescription, stringCollection, @"", 100,
true, true, Microsoft.SharePoint.SPViewCollection.SPViewType.Html, false);
spList.Update();
}
}
Здесь мы видим, что все, что делали, - это создание объекта SPList для использования в Sharepoint. После развертывания у нас есть новый список, который мы можем добавить на наши страницы. Так в чем проблема?
Ну в Php я мог бы передать createNewList(SPFeatureReceiverProperties properties)
к функции, запрашивающей объект типа SPList, и он будет работать (если я что-то упустил>.>) Здесь это похоже на то, что это не SPList.
Итак, мой вопрос:
Что мне нужно изменить, чтобы я мог как создать список, так и вернуть объект SPLIst? это так же просто, как return new SPAPI.Lists.Create(properties, param, "Fake List", "Sample Description", SPListTemplateType.GenericList, "Sample View Description");
Потому что мне это кажется правильным.
Обновить
Превращение подписи метода в SPList и возвращение return new ....
не работал.
1 ответ
Вам нужно вернуть SPList от обоих ваших методов:
protected SPList createNewList(SPFeatureReceiverProperties properties)
{
//Do the stuff
SPList result = new SPAPI.Lists.Create(properties, param, "Fake List", "Sample Description", SPListTemplateType.GenericList, "Sample View Description");
return result;
}
public SPList Create(SPFeatureReceiverProperties properties, Dictionary<string, List<AddParams>> columns,
string name, string description, SPListTemplateType type, string viewDescription)
{
// Do the stuff
return spList;
}