JavaScriptConverter Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Özel tür dönüştürücüsü için soyut bir temel sınıf sağlar.
public ref class JavaScriptConverter abstract
public abstract class JavaScriptConverter
type JavaScriptConverter = class
Public MustInherit Class JavaScriptConverter
- Devralma
-
JavaScriptConverter
Örnekler
Aşağıdaki örnekte sınıfı için özel dönüştürücü oluşturma gösterilmektedir ListItemCollection .
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
Açıklamalar
sınıfı, JavaScriptConverter sınıfı tarafından JavaScriptSerializer yerel olarak desteklenmeyen yönetilen türler için serileştirme ve seri durumdan çıkarma işlemleri uygulamanıza olanak tanır. Serileştirme ve seri durumdan çıkarma işlemi üzerinde daha fazla denetime ihtiyacınız olduğunda da kullanabilirsiniz JavaScriptConverter .
özelliği, SupportedTypes özel dönüştürücülerin dönüştürücü hizmetleri sağladığı türleri gösterir.
Özel dönüştürücülerin örnek tarafından JavaScriptSerializer kullanılması gerektiğini belirtmek için dönüştürücüsü örneğe kaydetmeniz gerekir. sınıfını JavaScriptSerializer doğrudan kullanıyorsanız dönüştürücüsü RegisterConverters kaydetmek için yöntemini kullanmanız gerekir. Aksi takdirde, ECMAScript'ten (JavaScript) Web yöntemlerini çağırıyorsanız ve özel dönüştürücüyü kullanmak istiyorsanız, yapılandırma dosyasına bir converters
öğe ekleyerek kaydedebilirsiniz. Daha fazla bilgi için bkz. Nasıl yapılır: Microsoft Ajax'ta ASP.NET Hizmetlerini Yapılandırma.
JavaScriptSerializer Örnek, kayıtlı özel dönüştürücüsü olan bir türü seri hale getirdiğinde, seri hale getirici yöntemini çağırırSerialize. Benzer şekilde, örnek bir JavaScript Nesne Gösterimi (JSON) dizesini seri durumdan çıkardığında ve JSON dizesi içindeki bir türün kendisiyle ilişkilendirilmiş özel bir dönüştürücüye sahip olduğunu algıladığında JavaScriptSerializer , seri hale getirici yöntemini çağırır Deserialize .
Uygulayanlara Notlar
'den JavaScriptConverterdevraldığınızda, aşağıdaki üyeleri geçersiz kılmanız gerekir:
Deserialize(IDictionary<String,Object>, Type, JavaScriptSerializer)
SupportedTypesJavaScriptSerializer , uygulayıcıları ConvertToType<T>(Object) JavaScriptConvertertarafından kullanılacak yöntemi sağlar. Dönüştürücü kodu, seri hale getiricinin ona geçirdiği sözlükte yer alan bir değeri alabilmeli ve sonra bu değeri türünde
T
bir nesneye dönüştürebilmelidir. Bunu gerçekleştirmek için özel dönüştürme kodunu yeniden uygulamak yerine yöntemini çağırabilirsiniz ConvertToType<T>(Object) .
Oluşturucular
JavaScriptConverter() |
JavaScriptConverter sınıfının yeni bir örneğini başlatır. |
Özellikler
SupportedTypes |
Türetilmiş bir sınıfta geçersiz kılındığında, desteklenen türlerden oluşan bir koleksiyon alır. |
Yöntemler
Deserialize(IDictionary<String,Object>, Type, JavaScriptSerializer) |
Türetilmiş bir sınıfta geçersiz kılındığında, sağlanan sözlüğü belirtilen türde bir nesneye dönüştürür. |
Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
Serialize(Object, JavaScriptSerializer) |
Türetilmiş bir sınıfta geçersiz kılındığında, ad/değer çiftlerinden oluşan bir sözlük oluşturur. |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |