JavaScriptConverter Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menyediakan kelas dasar abstrak untuk pengonversi jenis kustom.
public ref class JavaScriptConverter abstract
public abstract class JavaScriptConverter
type JavaScriptConverter = class
Public MustInherit Class JavaScriptConverter
- Warisan
-
JavaScriptConverter
Contoh
Contoh berikut menunjukkan cara membuat pengonversi kustom untuk ListItemCollection kelas .
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;
}
}
}
Imports System.Collections.Generic
Imports System.Collections.ObjectModel
Imports System.Web.UI.WebControls
Imports System.Collections
Namespace System.Web.Script.Serialization.VB
Public Class ListItemCollectionConverter
Inherits JavaScriptConverter
Public Overrides ReadOnly Property SupportedTypes() As _
System.Collections.Generic.IEnumerable(Of System.Type)
Get
' Define the ListItemCollection as a supported type.
Return New ReadOnlyCollection(Of Type)(New List(Of Type) _
(New Type() {GetType(ListItemCollection)}))
End Get
End Property
Public Overrides Function Serialize(ByVal obj As Object, _
ByVal serializer As JavaScriptSerializer) As _
System.Collections.Generic.IDictionary(Of String, Object)
Dim listType As ListItemCollection = CType(obj, ListItemCollection)
If Not (listType Is Nothing) Then
' Create the representation.
Dim result As New Dictionary(Of String, Object)
Dim itemsList As New ArrayList()
Dim item As ListItem
For Each item In listType
' Add each entry to the dictionary.
Dim listDict As New Dictionary(Of String, Object)
listDict.Add("Value", item.Value)
listDict.Add("Text", item.Text)
itemsList.Add(listDict)
Next item
result("List") = itemsList
Return result
End If
Return New Dictionary(Of String, Object)
End Function
Public Overrides Function Deserialize(ByVal dictionary As _
System.Collections.Generic.IDictionary(Of String, Object), _
ByVal type As System.Type, ByVal serializer As JavaScriptSerializer) As Object
If dictionary Is Nothing Then
Throw New ArgumentNullException("dictionary")
End If
If type Is GetType(ListItemCollection) Then
' Create the instance to deserialize into.
Dim list As New ListItemCollection()
' Deserialize the ListItemCollection's items.
Dim itemsList As ArrayList = CType(dictionary("List"), ArrayList)
Dim i As Integer
For i = 0 To itemsList.Count - 1
list.Add(serializer.ConvertToType(Of ListItem)(itemsList(i)))
Next i
Return list
End If
Return Nothing
End Function
End Class
End Namespace
Keterangan
Kelas ini JavaScriptConverter memungkinkan Anda menerapkan proses serialisasi dan deserialisasi untuk jenis terkelola yang tidak didukung secara asli oleh JavaScriptSerializer kelas . Anda juga dapat menggunakan JavaScriptConverter ketika Anda membutuhkan lebih banyak kontrol atas proses serialisasi dan deserialisasi.
Properti SupportedTypes menunjukkan jenis pengonversi kustom yang menyediakan layanan konverter.
Untuk menunjukkan bahwa pengonversi kustom harus digunakan oleh JavaScriptSerializer instans, Anda harus mendaftarkan konverter dengan instans. Jika Anda menggunakan kelas secara JavaScriptSerializer langsung, Anda harus menggunakan RegisterConverters metode untuk mendaftarkan pengonversi. Jika tidak, jika Anda memanggil metode Web dari ECMAScript (JavaScript) dan Anda ingin menggunakan pengonversi kustom, Anda dapat mendaftarkannya dengan menambahkan converters
elemen dalam file konfigurasi. Untuk informasi selengkapnya, lihat Cara: Mengonfigurasi layanan ASP.NET di Microsoft Ajax.
JavaScriptSerializer Ketika instans menserialisasikan jenis yang memiliki pengonversi kustom yang terdaftar, serializer memanggil Serialize metode . Demikian pula, ketika JavaScriptSerializer instans mendeserialisasi string JavaScript Object Notation (JSON) dan mengenali bahwa jenis di dalam string JSON memiliki pengonversi kustom yang terkait dengannya, serializer memanggil Deserialize metode .
Catatan Bagi Implementer
Saat mewarisi dari JavaScriptConverter, Anda harus mengambil alih anggota berikut:
Deserialize(IDictionary<String,Object>, Type, JavaScriptSerializer)
SupportedTypes JavaScriptSerializer ConvertToType<T>(Object) menyediakan metode yang akan digunakan oleh pelaksana JavaScriptConverter. Kode pengonversi harus dapat mengambil nilai yang terkandung dalam kamus yang diteruskan oleh serializer ke dalamnya, lalu mengonversi nilai tersebut menjadi objek jenis
T
. Daripada menerapkan kembali kode konversi kustom untuk mencapai ini, Anda dapat memanggil metode .ConvertToType<T>(Object)
Konstruktor
JavaScriptConverter() |
Menginisialisasi instans baru kelas JavaScriptConverter. |
Properti
SupportedTypes |
Saat ditimpa di kelas turunan, mendapatkan koleksi jenis yang didukung. |
Metode
Deserialize(IDictionary<String,Object>, Type, JavaScriptSerializer) |
Saat ditimpa di kelas turunan, mengonversi kamus yang disediakan menjadi objek dari jenis yang ditentukan. |
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetType() |
Mendapatkan instans Type saat ini. (Diperoleh dari Object) |
MemberwiseClone() |
Membuat salinan dangkal dari yang saat ini Object. (Diperoleh dari Object) |
Serialize(Object, JavaScriptSerializer) |
Saat ditimpa di kelas turunan, menyusun kamus pasangan nama/nilai. |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |