Lire en anglais

Partager via


JavaScriptConverter Classe

Définition

Fournit une classe de base abstraite pour un convertisseur de type personnalisé.

C#
public abstract class JavaScriptConverter
Héritage
JavaScriptConverter

Exemples

L’exemple suivant montre comment créer un convertisseur personnalisé pour la ListItemCollection classe .

C#
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Web.UI.WebControls;
using System.Collections;

namespace System.Web.Script.Serialization.CS
{
    public class ListItemCollectionConverter : JavaScriptConverter
    {

        public override IEnumerable<Type> SupportedTypes
        {
            //Define the ListItemCollection as a supported type.
            get { return new ReadOnlyCollection<Type>(new List<Type>(new Type[] { typeof(ListItemCollection) })); }
        }

        public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
        {
            ListItemCollection listType = obj as ListItemCollection;

            if (listType != null)
            {
                // Create the representation.
                Dictionary<string, object> result = new Dictionary<string, object>();
                ArrayList itemsList = new ArrayList();
                foreach (ListItem item in listType)
                {
                    //Add each entry to the dictionary.
                    Dictionary<string, object> listDict = new Dictionary<string, object>();
                    listDict.Add("Value", item.Value);
                    listDict.Add("Text", item.Text);
                    itemsList.Add(listDict);
                }
                result["List"] = itemsList;

                return result;
            }
            return new Dictionary<string, object>();
        }

        public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
        {
            if (dictionary == null)
                throw new ArgumentNullException("dictionary");

            if (type == typeof(ListItemCollection))
            {
                // Create the instance to deserialize into.
                ListItemCollection list = new ListItemCollection();

                // Deserialize the ListItemCollection's items.
                ArrayList itemsList = (ArrayList)dictionary["List"];
                for (int i=0; i<itemsList.Count; i++)
                    list.Add(serializer.ConvertToType<ListItem>(itemsList[i]));

                return list;
            }
            return null;
        }
    }
}

Remarques

La JavaScriptConverter classe vous permet d’implémenter des processus de sérialisation et de désérialisation pour les types managés qui ne sont pas pris en charge en mode natif par la JavaScriptSerializer classe . Vous pouvez également utiliser JavaScriptConverter lorsque vous avez besoin de davantage de contrôle sur le processus de sérialisation et de désérialisation.

La SupportedTypes propriété indique les types pour lesquels un convertisseur personnalisé fournit des services de convertisseur.

Pour indiquer qu’un convertisseur personnalisé doit être utilisé par l’instance JavaScriptSerializer , vous devez inscrire le convertisseur auprès de l’instance. Si vous utilisez la JavaScriptSerializer classe directement, vous devez utiliser la RegisterConverters méthode pour inscrire le convertisseur. Sinon, si vous appelez des méthodes Web à partir d’ECMAScript (JavaScript) et que vous souhaitez utiliser le convertisseur personnalisé, vous pouvez l’inscrire en ajoutant un converters élément dans le fichier de configuration. Pour plus d’informations, consultez Guide pratique pour configurer ASP.NET Services dans Microsoft Ajax.

Lorsque l’instance JavaScriptSerializer sérialise un type pour lequel un convertisseur personnalisé est inscrit, le sérialiseur appelle la Serialize méthode . De même, lorsque l’instance JavaScriptSerializer désérialise une chaîne JSON (JavaScript Object Notation) et reconnaît qu’un type à l’intérieur de la chaîne JSON est associé à un convertisseur personnalisé, le sérialiseur appelle la Deserialize méthode .

Notes pour les responsables de l’implémentation

Lorsque vous héritez de JavaScriptConverter, vous devez substituer les membres suivants :

Constructeurs

JavaScriptConverter()

Initialise une nouvelle instance de la classe JavaScriptConverter.

Propriétés

SupportedTypes

En cas de substitution dans une classe dérivée, obtient une collection des types pris en charge.

Méthodes

Deserialize(IDictionary<String,Object>, Type, JavaScriptSerializer)

En cas de substitution dans une classe dérivée, convertit le dictionnaire fourni en un objet du type spécifié.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
Serialize(Object, JavaScriptSerializer)

En cas de substitution dans une classe dérivée, génère un dictionnaire de paires nom/valeur.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

S’applique à

Produit Versions
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

Voir aussi