gpt4 book ai didi

c# - 如何通过 WCF 传递 System.Drawing.Rectangle?

转载 作者:行者123 更新时间:2023-12-04 17:04:25 26 4
gpt4 key购买 nike

我有一个使用类的 WCF 服务

namespace MyService
{
[DataContract]
public class SomeResponse
{
[DataMember]
public System.Drawing.Rectangle BoundingBox { get; set; }
}
}

在客户端,当我尝试访问 BoundingBox 时矩形,矩形将其命名空间从 System.Drawing.Rectangle 更改为至 MyServiceReference.Rectangle .
我希望 WCF 框架足够聪明,能够意识到 System.Drawing.Rectangle 也存在于客户端并相应地使用正确的命名空间。是否可以告诉服务这样做?

最佳答案

这里的主要问题是 WCF 使用 SOAP 发送/接收数据,它不直接连接到 .net,而是一个开放的 Web 标准。例如。 Java 客户端也可能使用数据,因此对 System.Drawing.Rectangle 一无所知。命名空间。然而,它可以使用 Web 服务定义语言中提供的 Rectangle 并将其映射到 java Rectangle 结构。

在您的情况下,您可能想要转换和转换 System.Drawing.RectangleMyServiceReference.Rectangle .但是,WCF 通过检查属性中的“Reuse types in all referenced assemblies”选项为此提供了内置支持:

When a service reference is added to a project, any types defined in the service are generated in the local project. In many cases, this creates duplicate types when a service uses common .NET Framework types or when types are defined in a shared library.

To avoid this problem, types in referenced assemblies are shared by default. If you want to disable type sharing for one or more assemblies, you can do so in the Configure Service References dialog box.



link提供有关如何启用/使用此功能的示例。

最后,确保在您的客户端应用程序中引用了所有正确的程序集。如果没有被引用,它显然不能被 WCF 重新使用。

关于c# - 如何通过 WCF 传递 System.Drawing.Rectangle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17570678/

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