Передайте объекты SilverLight через сервер кода на стороне asp.net

голоса
2

Можно ли передавать объекты (сериализуемые классы или другие способы) в Silverlight управления через asp.net на стороне сервера код?

Задан 09/12/2008 в 23:18
источник пользователем
На других языках...                            


1 ответов

голоса
3

Ну, это будет привлекать сериализации. Помните - ваш Silverlight клиент отключается от сервера, так же, как браузер отключен от сервера.

Существует большая статья здесь на JSON сериализации и из Silverlight. Вот резюме из статьи:

Давайте начнем с кратким введением , что JSON является. Это означает J AVA S cript O ▪ Таблица N otation и используется в качестве альтернативы в XML. Вот простой пример файла JSON:

{"FirstName":"Martin","LastName":"Mihaylov"} для одного объекта

А также

[{"FirstName":"Martin","LastName":"Mihaylov"},{"FirstName":"Emil","LastName":"Stoychev"}] для нескольких объектов.

Это выглядит как массив. В зависимости от объекта, который сериализации это может выглядеть очень сложным.

Сериализация

Для того, чтобы быть сериализации с DataContractJsonSerializer мы должны установить [DataContract] атрибут. Что свойства, которые будут использоваться сериализациями должны иметь [DataMember] атрибуты. Примечание: Для того, чтобы использовать эти атрибуты добавить ссылку на System.Runtime.Serialization;

[DataContract]
public class Person
{

    [DataMember]
    public string FirstName
    {
        get;
        set;
    }

    [DataMember]
    public string LastName
    {
        get;
        set;
    }

}

Теперь мы готовы начать с сериализации. Давайте создадим метод, который принимает наш объект в качестве аргумента и возвращает строку в формате JSON:

public static string SerializeToJsonString(object objectToSerialize)
{
    using (MemoryStream ms = new MemoryStream())
    {
        DataContractJsonSerializer serializer =
        new DataContractJsonSerializer(objectToSerialize.GetType());
        serializer.WriteObject(ms, objectToSerialize);
        ms.Position = 0;


        using (StreamReader reader = new StreamReader(ms))
        {
            return reader.ReadToEnd();
        }

    }

}

десериализации

public static T Deserialize<T>(string jsonString)
{

    using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(jsonString)))
    {

        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));


        return (T)serializer.ReadObject(ms);

    }

}

Вот как это выглядит из клиентского кода:

List<Person> persons = Deserialize<List<Person>>( jsonString );
Ответил 09/12/2008 в 23:25
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more