1

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

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

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

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

4

3 回答 3

2

请参阅WCF WebGet 和 ICollection<>

添加

[ServiceKnownType(typeof(string[]))]

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

于 2010-10-10T16:15:13.133 回答
1

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

有什么办法可以指定集合不能设置,还在这里用吗?

于 2010-10-10T17:11:06.563 回答
1

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

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

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

于 2010-10-10T17:47:24.070 回答