2013-06-06 1 views
0

Venant de PHP Je ne suis pas habitué à assigner ou à renvoyer des types spécifiques car PHP ne s'en soucie pas vraiment. Mais revenons au monde de Java et C# ces langues se soucient, quand vous dites me passer ce type il attend ce type. Alors, que suis-je ne fais mal et comment puis-je créer ce à être de type SPListC#, méthode crée une liste mais n'est pas de type liste?

J'ai une fonction très basique tel que:

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"); 
    } 

Cela vous permettra de créer une liste, un SharePoint 2010 liste lors de l'activation de la partie Web. le nom est Fake List et nous voyons que nous passons dans certaines colonnes avec leurs paramètres respectés. Permet de regarder cette méthode 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(); 
     } 
    } 

Nous pouvons voir ici que tous faisaient crée un objet SPList pour une utilisation dans Sharepoint. Lors du déploiement, nous avons une nouvelle liste que nous pouvons ajouter à nos pages. Donc quel est le problème? Eh bien dans Php je pourrais passer le createNewList(SPFeatureReceiverProperties properties) à une fonction demandant l'objet de type SPList et cela fonctionnerait (à moins que je manque quelque chose>.>) Ici c'est comme, non ce n'est pas un SPList disparaître.

Ma question est la suivante:

Que dois-je changer pour que je puisse à la fois créer la liste et retourner l'objet SPList? est-ce aussi simple que return new SPAPI.Lists.Create(properties, param, "Fake List", "Sample Description", SPListTemplateType.GenericList, "Sample View Description");

Parce que cela me semble juste.

Mise à jour

Tourner la signature de la méthode pour SPList et retourner le return new .... ne fonctionne pas.

+3

Vous semblez appeler un constructeur * d'une classe appelée 'create'. Cela ne semble pas être une bonne idée. Il est loin d'être clair ce que vous essayez vraiment de faire ici ... –

Répondre

0

Vous devez retourner un SPList des deux vos méthodes:

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; 
} 
Questions connexes