将ICollection属性与WCF服务一起使用

时间:2010-10-10 16:08:36

标签: c# visual-studio silverlight wcf service-reference

我有一个类ExpenseInfo,其中包含ICollection<String>属性:

public ICollection<String> WhoOwes { get; private set; }

我有一个WCF服务,它返回ExpenseInfo类型的对象。我在同一解决方案中的Silverlight项目中添加了对服务的引用。这会生成一堆代码,包括Silverlight项目中 Reference.cs 中的ExpenseInfo类。

这个类看起来很不错(但是,如果我想添加RIA验证数据注释,我该怎么做?),但它缺少WhoOwes属性。是否有某些原因无法通过电线发送?我需要以另一种方式表示该数据吗?或者我搞砸了一些设置?

3 个答案:

答案 0 :(得分:2)

请参阅WCF WebGet and ICollection<>

添加

[ServiceKnownType(typeof(string[]))]

属性为您的类(不是您的方法),WhoOwes属性将作为字符串[]发送。

答案 1 :(得分:1)

看起来private set是个问题。我删除了它,现在该字段正在显示。

有没有办法指定无法设置集合,仍然可以在这里使用它?

答案 2 :(得分:1)

AFAIK C#属性语义未在描述Web服务的元数据中表示。

这些元数据位于WCF生成的不同XML模式文件(扩展名为“.xsd”)中。 对于可以添加到数据类型的RIA属性也是如此。

解决方案是通过共享嵌入类型的DLL来让客户端了解它们。 您可以创建第三个项目“Data”来保存数据类并从服务器和客户端项目中引用它。