2013-03-26 10 views
5

ho 2 classi:Passo oggetto con la proprietà complesso con servizio web

public class testClass1 
    { 
     public string Name { get; set; } 
     public testClass2 testClass2Object { get; set; } 
    } 

    public class testClass2 
    { 
     public testClass2() { } 

     public testClass2(int i) { TestProperty = i; } 

     public int TestProperty { get; set; } 
    } 

e voglio tornare all'oggetto prima della classe con webMethod:

[WebMethod] 
    public testClass1 testMethod() 
    { 
     testClass1 test = new testClass1(); 
     test.Name = "stackoverflow"; 
     test.testClass2Object = new testClass2(2); 
     return test; 
    } 

ma non ottengo i valori di testClass2 proprietà dell'oggetto testClass1.

Ho provato le annotazioni [Serializable] [XmlInclude(typeof(testClass2))] ma non è cambiato nulla. Eventuali suggerimenti?

+6

Cosa succede se si rimuove il costruttore 'public testClass2 (int i)'? E se modificassi la dichiarazione in 'public testClass2 (int testProperty)'? (Chiedo il secondo perché so che i nomi effettivi dei parametri dei ctor possono influenzare la serializzazione JSON, non sono sicuro che ciò influenzerà comunque la serializzazione). –

+1

@Matthew Watson Removed constructor e ora funziona grazie. – pepela

+0

@Matthew Watson Non posso avere costruttore con parametro se voglio inviarlo oggetto? – pepela

risposta

1

Se eseguo il codice "così com'è" e invocare testMethod(), ottengo ...

<testClass1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/"> 
    <Name>stackoverflow</Name> 
    <testClass2Object> 
      <TestProperty>2</TestProperty> 
    </testClass2Object> 
</testClass1> 

Si aspetta qualcosa di diverso? Forse mi manca qualcosa.

Se questo fa parte di un progetto più grande, magari provare a inserire solo questo codice in un nuovo progetto e vedere se potrebbe essere un'impostazione o un altro tipo di problema di configurazione.

+1

Ha! Non mi ero reso conto di aver messo una taglia su questa domanda. :) –

0

Eseguo il codice e l'uscita era qualcosa che mi aspettavo. L'utente dovrebbe utilizzare xml analisi per ottenere i dati da testclass2.

EDIT

vi consiglio di usare API Web invece di obsoleto ASMX, che utilizzano SOAP per generare non strutturati tonnellate no-schema XML in uscita.

Web-API ha un output veloce e leggero e si può avere sia il formato JSON che XML come output. molto robusto!

Problemi correlati