我有一个类ExpenseInfo
,其中包含ICollection<String>
属性:
public ICollection<String> WhoOwes { get; private set; }
我有一个WCF服务,它返回ExpenseInfo
类型的对象。我在同一解决方案中的Silverlight项目中添加了对服务的引用。这会生成一堆代码,包括Silverlight项目中 Reference.cs 中的ExpenseInfo
类。
这个类看起来很不错(但是,如果我想添加RIA验证数据注释,我该怎么做?),但它缺少WhoOwes
属性。是否有某些原因无法通过电线发送?我需要以另一种方式表示该数据吗?或者我搞砸了一些设置?
答案 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”来保存数据类并从服务器和客户端项目中引用它。