在wcf中,在DataMember属性上应用属性有 什么区别
private int m_SomeValue;
[DataMember]
public int SomeValue {
get {...}
set {...}
}
Run Code Online (Sandbox Code Playgroud)
而不是成员变量
[DataMember]
private int m_SomeValue;
public int SomeValue {
get {...}
set {...}
}
Run Code Online (Sandbox Code Playgroud)
?
我正在尝试从WCF中的服务方法返回一个复杂类型.我正在使用C#和.NET 4.这种复杂类型意味着不变(与.net字符串相同).此外,服务只返回它,并且从不接收它作为参数.
如果我尝试仅在属性上定义getter,则会出现运行时错误.我想这是因为没有setter导致序列化失败.不过,我认为这种类型应该是不变的.
例:
[DataContract]
class A
{
[DataMember]
int ReadOnlyProperty {get; private set;}
}
Run Code Online (Sandbox Code Playgroud)
由于序列化问题,服务无法加载.
有没有办法在WCF DataContract上创建只读属性?也许通过更换序列化器?如果是这样,怎么样?如果没有,你会对这个问题提出什么建议?
谢谢,
阿萨夫