我遇到了将生成的对象从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; }
}
答案 0 :(得分:1)
当您使用&#34;添加服务参考&#34;或&#34;配置服务参考&#34;时,选择&#34;重复使用参考组件中的类型&#34;。然后,您需要为服务和客户端提供定义CommonLib.Models.User
的程序集。
要回答您的评论,您已在客户端上使用WCF。您应该永远不会创建任何新的ASMX服务。
答案 1 :(得分:1)
我能够通过使用WCF服务解决问题,当我在客户端添加引用时,我只需选中该框以重用John Saunders建议的引用程序集。