Dostęp do pól_obiektu zwracanego przez interfejs XML_RPC

0

Witam

Mam następujący problem. Pobieram obiekty z serwera za pomoca interfejsu XML-RPC w C# gdy są to typy proste jak INT nie mam żadnego problemu natomiast gdy funkcja zwraca strukture nie potrafie sobie z tym poradzic.

Znam budowe struktury , tworzę ja w swojej aplikacji :

struct base_stations
{
public string type;
public string from;

     map[] map;

 }

Obiekt otrzymuję w ten sposób :

object t = proxy.session_receive(session, 0);

Próbowałem rzutowania :

base_stations eb new base_stations(); ;
eb = (base_stations)t;

Błąd o braku możliwośc rzutowani w taki sposób

lub

base_stations eb; ;
eb = t as base_stations;

gdy próbuje sie dostac do właściwości w niżej podany sposób wyrzuca mi bład iż obiekt nie istnieje tylko ,że obiekt t istnieje widzę nawet w debugerze ze pola sa zapisane .

MessageBox.Show(t.GetType().GetProperty("from").GetValue(t, null).ToString())

W C# nie moge sie do tego dostac interfejs jest ok w Pythonie wszystko działa poprawnie oczywiście.

0

a coś takiego?

base_stations t = (base_stations)proxy.session_receive(session,0);

poza tym podawaj dokładne komunikaty o błędach

0
Azarien napisał(a)

a coś takiego?

base_stations t = (base_stations)proxy.session_receive(session,0);

poza tym podawaj dokładne komunikaty o błędach

Efekt Twojej propozycji -> error :"Nie można rzutować obiektu typu 'System.Object[]' na typ 'XmlRpcClient.base_stations'."

Error w przypadku wykorzystania :

object t = proxy.session_receive(session, 0);
if (t != null)
{

                    MessageBox.Show(t.GetType().GetMembers()[0].GetType().GetProperty("from").GetValue(t,null).ToString());
                }

-> error : "Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu."

Pytanie czy da sie to obejsc bez rzutowania .

0

nigdy tego nie robiłem, ale skoro

proxy.session_receive(session,0);

zwraca Object[]
to może spróbuj

base_stations[] s = (base_stations[])proxy.session_receive(session,0);

albo jakoś przeiterować po tej kolekcji?

0

Udało mi sie otzymac prawidłowo strukturę zamapowelm to na XmlRpcStruct, Mrozu możesz rozwniac temat w jaki sposób przeiterowac po object[] ?

0
SmoQ napisał(a)

w jaki sposób przeiterowac po object[] ?

Nie wiesz co to jest iteracja? o.O

0

O dziwo wiem czym jest iteracja :) tylko jak przejrzec kolekcje , stworzyc enumerator dla ogołnie zwracanej formy object[] poniewaz ani rzutowani na "moja " strukture nie wchodzi w gre , wykorzystanie refleksji i sprawdznei pól przez refleksje System.Reflection.FieldInfo[] tez w tym przypadku sie nie sprawdza stad moje pytanie

1 użytkowników online, w tym zalogowanych: 0, gości: 1