Web服务:转换或转换生成的对象

时间:2014-03-12 18:00:25

标签: c# .net web-services wsdl asmx

我遇到了将生成的对象从Web服务转换为我已创建的C#对象的问题。这个对象位于一个公共库中,服务器客户端都可以访问它,所以我最好使用它来代替生成的对象类型。

所以我的问题是,是否有可能做某种"铸造"或转换,如果是,那么最好的方法是什么。

编辑: 我遇到的问题是铸件不能正常工作。使用Web服务不是问题。

网络服务代码:

/// <summary>
/// Summary description for WebService1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{

    [WebMethod]
    public CommonLib.Models.User GetInfo()
    {
        return new CommonLib.Models.User()
        {
            Firstname = "John",
            Lastname = "Doe",
            UserID = 1,
            Timestamp = DateTime.Now

        };
    }
}

使用网络服务的代码:

WebService1SoapClient prox = new WebService1SoapClient();

object userInfo = prox.GetInfo();
CommonLib.Models.User two = (CommonLib.Models.User)userInfo;

用户对象

public class User
{
    public int UserID { get; set; }

    public string Firstname { get; set; }

    public string Lastname { get; set; }
}

2 个答案:

答案 0 :(得分:1)

当您使用&#34;添加服务参考&#34;或&#34;配置服务参考&#34;时,选择&#34;重复使用参考组件中的类型&#34;。然后,您需要为服务和客户端提供定义CommonLib.Models.User的程序集。

要回答您的评论,您已在客户端上使用WCF。您应该永远不会创建任何新的ASMX服务。

答案 1 :(得分:1)

我能够通过使用WCF服务解决问题,当我在客户端添加引用时,我只需选中该框以重用John Saunders建议的引用程序集。