gpt4 book ai didi

c# - 如何使用 WebServices 返回自定义对象

转载 作者:太空狗 更新时间:2023-10-30 00:59:03 27 4
gpt4 key购买 nike

[问题]
创建了一个要部署在服务器机器和客户端机器上的共享库后,我该如何在客户端-服务器与库提供的类之间进行通信?

通过网络服务传输信息似乎不起作用,因为网络服务返回的序列化对象是一个网络服务类,不会转换为共享库。

我是否错误地使用了网络服务?有没有更好的办法?

[示例]

MyLibrary.cs 和 SubLibrary.cs 位于客户端应用程序要使用的共享程序集中。

MyLibrary.cs

public class MyLibrary
{
private SubLibrary sublib = new SubLibrary();

public class MyLibrary()
{
}

public string GetValue()
{
return sublib.GetValue();
}
}

子库.cs

public class SubLibrary
{
private string str = "Hello World";

public SubLibrary()
{
}

public string GetValue()
{
return str;
}
}

WebService.asmx.cs

[WebMethod]
public MyLibrary GetInfo()
{
return new MyLibrary();
}

客户端应用

private void GetInfo_Click(object sender, System.EventArgs e)
{
WS.WebService services = new WS.WebService();

MyLibrary info = services.GetInfo(); // This of course doesn't convert.

MessageBox.Show(info.GetValue());
}

最佳答案

简而言之,这是 1.1 中的一个痛点(部分 2.0 也是如此)。程序集共享(或类型共享)真正才开始成为 WCF (.NET 3.0) 中的一项功能。 1.1 中生成的代理永远不会直接与“实际”类兼容;您可以在多个服务(“sharetypes”?)之间共享相同的代理,但不能与独立的源文件 IIRC 共享。

因为它是 C# 1.2,所以您既没有部分类也没有扩展方法可以用来翻译它们。

选项(我可以看到):

  • 编写一个静态实用方法来费力地在两个对象模型之间进行转换
  • 同上,但使用 XmlSerializer(代码更少,但没有那么快)
  • 接受它
  • 升级到 WCF(相当大的变化)

关于c# - 如何使用 WebServices 返回自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1469579/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com