Asa*_*f R 18 .net wcf .net-4.0 datacontract
我正在尝试从WCF中的服务方法返回一个复杂类型.我正在使用C#和.NET 4.这种复杂类型意味着不变(与.net字符串相同).此外,服务只返回它,并且从不接收它作为参数.
如果我尝试仅在属性上定义getter,则会出现运行时错误.我想这是因为没有setter导致序列化失败.不过,我认为这种类型应该是不变的.
例:
[DataContract]
class A
{
[DataMember]
int ReadOnlyProperty {get; private set;}
}
Run Code Online (Sandbox Code Playgroud)
由于序列化问题,服务无法加载.
有没有办法在WCF DataContract上创建只读属性?也许通过更换序列化器?如果是这样,怎么样?如果没有,你会对这个问题提出什么建议?
谢谢,
阿萨夫
Krz*_*mic 16
穿上后[DataMember]场,你不需要一个二传手.
小智 9
让你的setter公开以满足序列化程序,但只是不对setter做任何事情.不是'纯粹',而是完成它
public string MyProperty
{
get {
return this._myProperty
}
set {}
}
Run Code Online (Sandbox Code Playgroud)
DataMember字段不能为只读,因为wcf不会按原样序列化对象,并且每次反序列化开始之前,都会使用默认构造函数创建新的对象实例。分派器在反序列化之后使用设置器来设置字段值。
但是所有上面的文字可能是一个大错误:)
为使它们真正成为只读,请使服务器逻辑验证此字段值。
| 归档时间: |
|
| 查看次数: |
16179 次 |
| 最近记录: |