JavaScriptConverter 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
사용자 지정 형식 변환기의 추상 기본 클래스를 제공합니다.
public ref class JavaScriptConverter abstract
public abstract class JavaScriptConverter
type JavaScriptConverter = class
Public MustInherit Class JavaScriptConverter
- 상속
-
JavaScriptConverter
예제
다음 예제에 대 한 사용자 지정 변환기를 만드는 방법을 보여 줍니다는 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
설명
합니다 JavaScriptConverter 클래스를 사용 하면 serialization을 구현 하 여 고유 하 게 지원 되지 않는 관리 되는 형식에 대 한 프로세스를 deserialization 하는 JavaScriptSerializer 클래스입니다. 사용할 수도 있습니다 JavaScriptConverter serialization 및 deserialization 프로세스를 보다 자세히 제어 해야 하는 경우.
SupportedTypes 속성 사용자 지정 변환기 변환기 서비스 제공 하는 형식을 나타냅니다.
사용자 지정 변환기를 사용 해야 함을 나타내려면는 JavaScriptSerializer 들어 인스턴스와 변환기를 등록 해야 합니다. 사용 중인 경우는 JavaScriptSerializer 직접 클래스를 사용 해야는 RegisterConverters 변환기를 등록 하는 방법입니다. 그렇지 않으면 ECMAScript (JavaScript)에서 웹 메서드를 호출 하는 사용자 지정 변환기를 사용 하려는 경우 등록할 수 있습니다를 추가 하 여를 converters
구성 파일의 요소입니다. 자세한 내용은 방법: Microsoft Ajax에서 ASP.NET 서비스 구성합니다.
경우는 JavaScriptSerializer 인스턴스는 형식에 등록 하는 사용자 지정 변환기가 호출 하 여 serializer 직렬화 합니다 Serialize 메서드. 마찬가지로, 합니다 JavaScriptSerializer 인스턴스 개체 JSON (JavaScript Notation) 문자열을 역직렬화 되 고 JSON 문자열을 내부 형식에 연결 된 serializer 호출 하 여 사용자 지정 변환기는 인식는 Deserialize 메서드.
구현자 참고
상속 하는 경우 JavaScriptConverter, 멤버를 재정의 해야 합니다.
Deserialize(IDictionary<String,Object>, Type, JavaScriptSerializer)
SupportedTypes JavaScriptSerializer 제공 된 ConvertToType<T>(Object) 의 구현자에 의해 사용 될 메서드 JavaScriptConverter합니다. 변환기 코드 serializer에 전달 하는 사전에 포함 된 값을 사용 하도록 수 여야 하며 다음 해당 값 형식의 개체로 변환
T
합니다. 이렇게 하려면 사용자 지정 변환 코드를 다시 구현 하지 않고 호출할 수 있습니다는 ConvertToType<T>(Object) 메서드.
생성자
JavaScriptConverter() |
JavaScriptConverter 클래스의 새 인스턴스를 초기화합니다. |
속성
SupportedTypes |
파생 클래스에서 재정의된 경우 지원되는 형식의 컬렉션을 가져옵니다. |
메서드
Deserialize(IDictionary<String,Object>, Type, JavaScriptSerializer) |
파생 클래스에서 재정의되는 경우 제공된 사전을 지정된 형식의 개체로 변환합니다. |
Equals(Object) |
지정된 개체가 현재 개체와 같은지 확인합니다. (다음에서 상속됨 Object) |
GetHashCode() |
기본 해시 함수로 작동합니다. (다음에서 상속됨 Object) |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
Serialize(Object, JavaScriptSerializer) |
파생 클래스에서 재정의되는 경우 이름/값 쌍으로 구성된 사전을 만듭니다. |
ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
적용 대상
추가 정보
.NET