【发布时间】:2011-01-30 11:54:45
【问题描述】:
我正在尝试从 WCF 中的服务方法返回复杂类型。我正在使用 C# 和 .NET 4。这种复杂类型是不变的(与 .net 字符串相同)。此外,服务只返回它,从不接收它作为参数。
如果我尝试仅在属性上定义 getter,则会出现运行时错误。我猜这是因为没有设置器会导致序列化失败。不过,我认为这种类型应该是不变的。
例子:
[DataContract]
class A
{
[DataMember]
int ReadOnlyProperty {get; private set;}
}
由于序列化问题,服务加载失败。
有没有办法在 WCF DataContract 上创建只读属性?也许通过更换序列化程序?如果是这样,怎么做?如果没有,您对这个问题有何建议?
谢谢,
阿萨夫
【问题讨论】:
-
您可以使用只读字段(非属性)并在类的构造中初始化它们。另外...,可能重复:stackoverflow.com/q/1873741/945456
-
随着转向不可变类和 C#-6.0 对自动实现的 get-only 属性的支持,这一点在今天变得更加重要。
标签: .net wcf .net-4.0 datacontract