Περάστε αντικείμενα για το Silverlight μέσω του διακομιστή κωδικό πλευρά asp.net

ψήφοι
2

Είναι δυνατόν να περάσει αντικείμενα (serializable τάξεις ή άλλους τρόπους) σε Silverlight έλεγχο μέσα πλευρά του κώδικα διακομιστή asp.net;

Δημοσιεύθηκε 09/12/2008 στις 23:18
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
3

Λοιπόν, πρόκειται να συμμετάσχει serialization. Θυμηθείτε - Silverlight πελάτης σας έχει αποσυνδεθεί από το διακομιστή, όπως ακριβώς και το πρόγραμμα περιήγησης έχει αποσυνδεθεί από το διακομιστή.

Υπάρχει ένα μεγάλο άρθρο εδώ για JSON serialization από και προς το Silverlight. Εδώ είναι η περίληψη από το άρθρο:

Ας ξεκινήσουμε με μια σύντομη εισαγωγή για το τι JSON είναι. Ξεχωρίζει για J Ava S cript O bject Ν otation και χρησιμοποιείται ως εναλλακτική λύση της XML. Εδώ είναι ένα απλό παράδειγμα για ένα αρχείο JSON:

{"FirstName":"Martin","LastName":"Mihaylov"} για ένα μεμονωμένο αντικείμενο

Και

[{"FirstName":"Martin","LastName":"Mihaylov"},{"FirstName":"Emil","LastName":"Stoychev"}] για πολλαπλά αντικείμενα.

Μοιάζει με μια σειρά. Ανάλογα με το αντικείμενο που έχει συνέχειες θα μπορούσε να φανεί πραγματικά περίπλοκη.

συνέχειες

Για να είναι serializable με DataContractJsonSerializer πρέπει να ορίσετε ένα [DataContract] χαρακτηριστικό. Οι properites που θα χρησιμοποιηθούν από την σειριακή πρέπει να έχει [DataMember] χαρακτηριστικά. Σημείωση: Για να χρησιμοποιήσετε αυτά τα χαρακτηριστικά προσθέσει μια αναφορά στην System.Runtime.Serialization?

[DataContract]
public class Person
{

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

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

}

Τώρα είμαστε έτοιμοι να αρχίσουμε με τη σειριακή. Ας δημιουργήσουμε μια μέθοδο που λαμβάνει αντικειμένου μας ως επιχείρημα και επιστρέφει ένα string σε μορφή 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();
        }

    }

}

Deserializing

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