0

Silverlight を使用して Windows ガジェットを開発しています。asp.net Web サービスを呼び出す必要があり、データを含むオブジェクトを返します。そのオブジェクトを受け取り、データを表示したい。

私のコードは以下のとおりです

Web サービス コード。

[WebMethod]
        public userdata LogIn(string username,string user_password)
        {

                return udata;
            }
            return new userdata();
        }
    }

私のカスタムクラスコードは

 public class userdata
    {
        string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        string userName;

        public string UserName
        {
            get { return userName; }
            set { userName = value; }
        }
        string department;

        public string Department
        {
            get { return department; }
            set { department = value; }
        }
        string designation;

        public string Designation
        {
            get { return designation; }
            set { designation = value; }
        }
        string email;

        public string Email
        {
            get { return email; }
            set { email = value; }
        }
        string mobile;

        public string Mobile
        {
            get { return mobile; }
            set { mobile = value; }
        }
        string ip;

        public string Ip
        {
            get { return ip; }
            set { ip = value; }
        }
        string id;

        public string Id
        {
            get { return id; }
            set { id = value; }
        }


    }

戻ります

<userdata>
<Name>Asik</Name>
<UserName>asikcse</UserName
><Department>technical</Department>
<Designation>Software Programmer</Designation>
<Id>1</Id>
</userdata>

そして、プロジェクトの最後に、その参照として Web 参照を追加しますが、これに対する解決策はありません。

LoginServiceSoapClient login = new LoginServiceSoapClient();
            login.LogInCompleted+=new EventHandler<LogInCompletedEventArgs>(login_LogInCompleted);
            login.LogInAsync(log._nameText, log._surnameText);
        }

        void login_LogInCompleted(object sender, LogInCompletedEventArgs e)
        {

              How can I retrieve this object returned by webmethod

        }
4

1 に答える 1

0

そのため、Silverlight アプリケーションでデータを保持するクラスを作成する必要があります。ユーザーデータ クラスをコピーすることをお勧めします。次に、そのエンドポイントにリクエストを送信してデータを取得する必要があります。これは、WebClient クラスを使用して実行できます。次に、DataContractSerializer を使用して xml をオブジェクトに変換します。次に例を示します。

WebClient webClient = new WebClient();

var data = webClient.DownloadString("<your endpoint>");  //You can do this async too

var serializer = new DataContractSerializer(typeof(UserData));

Byte[] bytes = Encoding.Unicode.GetBytes(data);

UserData userData;

using (MemoryStream stream = new MemoryStream(bytes))
{
    userData = serializer.ReadObject(stream) as UserData;
}

これを行うためのよりスマートな方法がいくつかあります。

于 2012-12-26T13:53:44.033 に答える