Web服务引用具有Icon类型属性的类

时间:2011-02-28 01:10:23

标签: c# wpf serialization

在我的webservice中,我引用的是一个带有类Icon的类的dll(其中包括类型stringDateTime)。 在我的UnitTest项目中创建服务引用时,我收到以下错误。

错误:

  

具有数据合同的ISerializable类型   在命名空间中命名'Icon'   'http://schemas.datacontract.org/2004/07/System.Drawing'   无法导入。数据合同   命名空间无法自定义   ISerializable类型和生成的   命名空间   'KoenHoefman.ExchangeRate.WS.NUnit.QueryService'   与所需的CLR不匹配   命名空间'System.Drawing'。检查是否   已映射所需的命名空间   到不同的数据协定命名空间   并考虑明确地映射它   使用命名空间集合。

我可以访问此dll的源代码,因此可以进行一些更改,但这些更改应该非常小。该类标有Serializable属性,可能会给出之前的错误。删除此属性时,我收到另一个错误,指出我必须使用DataContractAttribute标记类,使用DataMemberAttribute标记成员。

现在对我来说,这似乎是一个很大的变化,因为这个类很少在webservice中使用(就在这个时候)。我还没有尝试过这个,但我想知道我的问题是否有另一个解决方案。

感谢。

1 个答案:

答案 0 :(得分:1)

我的建议是你创建另一个类来传递数据 - 这个类可以包装有问题的类并公开所需的属性 - 你应该使用DataContractAttribute&注释这个类。 DataMemberAttribute - 明确标记您的服务合同始终是个好主意。

就图标而言,您需要决定是否必须通过网络服务传输/公开图标信息。如果是,那么您可以公开类型为byte[](或base64编码的字符串)的属性来传输图标数据。