在我的webservice中,我引用的是一个带有类Icon
的类的dll(其中包括类型string
和DateTime
)。
在我的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中使用(就在这个时候)。我还没有尝试过这个,但我想知道我的问题是否有另一个解决方案。
感谢。
答案 0 :(得分:1)
我的建议是你创建另一个类来传递数据 - 这个类可以包装有问题的类并公开所需的属性 - 你应该使用DataContractAttribute&注释这个类。 DataMemberAttribute - 明确标记您的服务合同始终是个好主意。
就图标而言,您需要决定是否必须通过网络服务传输/公开图标信息。如果是,那么您可以公开类型为byte[]
(或base64编码的字符串)的属性来传输图标数据。