2013-03-26 6 views
5

Mam 2 klasy:Przełęcz obiekt o złożonej działce z usługi internetowej

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; } 
    } 

i chcę wrócić obiekt pierwszej klasy jest z webMethod:

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

ale nie uzyskać wartości testClass2 obiekt z obiektu testClass1.

Próbowałem adnotacji [Serializable] [XmlInclude(typeof(testClass2))], ale nic się nie zmieniło. Jakieś sugestie?

+6

Co się stanie, jeśli usuniesz konstruktor 'public testClass2 (int i)'? A co, jeśli zmienisz deklarację na "public testClass2 (int testProperty)"? (Pytam drugi, ponieważ wiem, że rzeczywiste nazwy parametrów ctor mogą wpłynąć na serializację JSON, nie jestem pewien, czy wpłynie to na inną serializację). –

+1

@Matthew Watson Usunięto konstruktor i teraz dziękuje. – pepela

+0

@Matthew Watson Nie mogę mieć konstruktora z parametrem, jeśli chcę wysłać obiekt? – pepela

Odpowiedz

1

Jeśli uruchomić kod "jak jest" i powołać TestMethod(), otrzymuję ...

<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> 

Czy spodziewałem się czegoś innego? Może coś mi brakuje.

Jeśli jest to część większego projektu, może spróbuj umieścić ten kod w nowym projekcie i sprawdzić, czy może to być ustawienie lub inny typ konfiguracji problemu.

+1

Ha! Nie zdawałem sobie sprawy, że postawiłem nagrodę za to pytanie. :) –

0

Uruchomiłem twój kod, a wynik był czymś, czego oczekiwałem. Musisz należy użyć analizy xml, aby uzyskać dane z testclass2.

EDIT

polecam użyć Web API zamiast przestarzałych ASMX, który używać mydła do generowania non-strukturyzowanych ton bez schematu XML w wyjściu.

Web-API ma szybki i lekki wydruk wyjściowy, a format wyjściowy może mieć zarówno format JSON, jak i XML. bardzo wytrzymały!

Powiązane problemy