Création de propriétés publiques dans des solutions WebPart en bac à sable
-
09-12-2019 - |
Question
J'essaie de porter une solution de ferme vers une solution en bac à sable, et je n'arrive pas à comprendre comment porter ce morceau de code :
[ToolboxItem(false)]
public partial class vClockPartSB : System.Web.UI.WebControls.WebParts.WebPart
{
[Personalizable(PersonalizationScope.User)]
public Collection<String> ClockTimeZones { get; set; }
[Personalizable(PersonalizationScope.User)]
public int NumberOfClocks { get; set; }
[Personalizable(PersonalizationScope.User)]
public string DdlMain { get; set; }
[Personalizable(PersonalizationScope.User)]
public string DdlSubOne { get; set; }
[Personalizable(PersonalizationScope.User)]
public string DdlSubTwo { get; set; }
[Personalizable(PersonalizationScope.User)]
public string DdlSubThree { get; set; }
[Personalizable(PersonalizationScope.User)]
public string DdlSubFour { get; set; }
protected override void OnInit(EventArgs e)
{
ClockTimeZones = new Collection<string>();
base.OnInit(e);
InitializeControl();
}
J'obtiens l'erreur suivante :
Erreur de composant WebPart :L'exception non perdue a été lancée par la méthode d'exécution du Code SandboxEd dans le domaine de l'application de confiance partielle:Composant WebPart La propriété 'ClockTimeZones' utilise un type non pris en charge (System.Collections.ObjectModel.Collection'1[[System.String, mscorlib, Version=2.0.0.0, Culture=neutre, PublicKeyToken=b77a5c561934e089]]), et ne peut pas être exécuté en tant que composant WebPart de code en bac à sable.
Comment dois-je l’aborder ?
La solution
Je serais tenté de stocker une chaîne - plutôt que d'une collection de cordes - et effectuez ma propre sérialisation / désérialisation.En utilisant probablement la fonction string.split () et un délimiteur approprié.
Autres conseils
Le System.Collections.ObjectModel
l’espace de noms n’est pas autorisé dans le bac à sable.
Pour votre scénario, pourriez-vous utiliser le Liste< chaîne > plutôt?
Apparemment, seuls les types suivants sont pris en charge comme les propriétés de la partie Web dans la solution Sandbox:
- chaîne
- bool
- Enum
- court
- int
- GUID
- Uri
- octet
- CHAR
- long
- float
- décimal
- Double
Voici un lien vers Alan Dahl's Article de blog où le blog d'Alan Dahls a fait la recherche.