首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCF和System.Drawing.Color

WCF和System.Drawing.Color
EN

Stack Overflow用户
提问于 2011-11-17 08:47:31
回答 3查看 1.1K关注 0票数 0

感谢大家的快速回答。但是我正在寻找答案,而不是解决方法(序列化为字符串),因为我想知道如何使用框架中的其他类型。

我很擅长WCF,但我认为我还处于初级阶段,因为我不能序列化一个System.Drawing.Color。

这是我的服务合同

代码语言:javascript
复制
using System.Drawing;
using System.ServiceModel;

namespace wcfServer
{

    [ServiceContract]
    public interface IColorService
    {
        [OperationContract]
        Color DoWork();
    }
}

下面是一个实现

代码语言:javascript
复制
public class ColorService : IColorService
{
    public Color DoWork()
    {
        return Color.Yellow;
    }
}

但是,在客户端,WCF不使用System.Drawing.Color,而是生成自己的颜色类型(结构)?

最终的结果是颜色黄色没有到达客户端

我认为这不是一个问题,因为.net颜色类型是用可序列化属性标记的

向你问好,汤姆

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-17 09:26:05

但是,在客户端,

不使用System.Drawing.Color,但它生成自己的颜色类型(结构)?我认为这不是一个问题,因为.net颜色类型是用可序列化属性标记的

我假设您在这里使用basicHttp或wsHttp。我说的并不是所有的绑定。

WCF服务与客户端之间的通信与.NET无关。关键词是互操作性。客户机不必使用.NET编写,它很可能是PHP或其他类型的客户机。

因此,WCF使用SOAP来发送和接收数据,所有主要编程语言都会实现这些数据。因此,为了让服务和客户端交换数据,必须定义该数据的格式。您不能说“嘿,我要发送一个System.Drawing.Color",因为这很可能不是客户端语言中的有效类或结构定义。

因此,您的服务定义了一个WSDL,其中包含一个模式定义,其中Color结构的内容将从System.Drawing.Color复制。它不会从序列化并通过连线发送到.NET框架。

票数 1
EN

Stack Overflow用户

发布于 2011-11-17 08:51:35

颜色通常是乱七八糟的--它们太多了。只需将颜色转换为32位ARGB结构( color类有一个这样做的方法),并在WCF接口中使用它。如果您想要格外小心,请用A、R、G和B定义您自己的结构(作为字节,WPF将它们作为双数,但没有人真正需要它们),并将您的服务与任何特定的UI平台分离。

票数 3
EN

Stack Overflow用户

发布于 2012-09-22 18:50:14

我能够通过在数据契约上使用"KnownTypeAttribute“来解决这个问题。因此,您可以在这样的服务合同上尝试"ServiceKnownTypeAttribute“:

代码语言:javascript
复制
[ServiceContract]
[ServiceKnownType(typeof(System.Drawing.Color))]
public interface IColorService
{
    [OperationContract]
    Color DoWork();
}

假设客户端代码也在使用.NET,这很好。在我的项目http://www.nquotes.net/中,使用"KnownType“的策略很好,让我避免了额外的序列化麻烦。它们应该包括颜色作为基本类型之一(例如,它们使用Guid,这是自动- http://msdn.microsoft.com/en-us/library/ms731923.aspx )。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8164315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档