创建Web服务以指定要使用的类型时是否有办法?具体来说,我希望能够在客户端和服务器上使用相同的类型来减少代码重复。
简化示例:
public class Name
{
public string FirstName {get; set;}
public string Surname { get; set; }
public override string ToString()
{
return string.Concat(FirstName, " ", Surname);
}
}
我不想在我的课程中重新编写功能。另一件事是,存在操作此类的任何代码都不会在客户端工作,因为生成的客户端类将是不同的类型。
答案 0 :(得分:2)
好的,我知道这是SOAP的一个明确的设计决定,所以你实际上不应该这样做。我发现以下page解释了原因:
服务共享架构和合同, 不上课。服务完全互动 他们通过表达结构 模式和行为通过 合同。服务的合同 描述了消息的结构 和排序约束 消息。的形式 表达式允许机器验证 传入的消息。机 验证传入的消息 允许您保护服务 完整性。合同和模式必须 随着时间的推移保持稳定,所以建设 他们灵活地很重要。
说过还有两种可能性:
答案 1 :(得分:0)
如果您希望在Web服务和客户端之间共享类型或结构,请在Web服务项目中添加一个公共结构,如下所示:
public struct Whatever
{
public string A;
public int B;
}
然后向您的Web服务添加一个方法,该方法将此结构作为其返回类型:
[WebMethod]
public Whatever GiveMeWhatever()
{
Whatever what = new Whatever();
what.A = "A";
what.B = 42;
return what;
}
更新客户端的Web引用后,您将能够在客户端应用程序中创建类型为Whatever的结构,如下所示:
Webreference.Whatever what = new Webreference.Whatever();
what.A = "that works?";
what.B = -1; // FILENOTFOUND
此技术允许您维护在一个位置(Web服务项目)来回传递所需的任何结构的定义。