c# - WCF 在没有 "set "的属性上阻塞。任何解决方法?

标签 c# wcf properties datacontractserializer

我有一些类作为服务方法的结果传递,并且该类有一个只读属性:

[DataContract]
public class ErrorBase
{
  [DataMember]
  public virtual string Message { get { return ""; } }
}

我在服务端遇到异常:

System.Runtime.Serialization.InvalidDataContractException: No set method for property 'Message' in type 'MyNamespace.ErrorBase'.

我必须将这个属性作为唯一的 getter,我不能让用户给它赋值。我可以使用任何解决方法吗?还是我缺少一些额外的属性?

最佳答案

给 Message 一个公共(public)的 getter 但 protected setter,这样只有子类(和 DataContractSerializer,因为它作弊 :) 可以修改值。

关于c# - WCF 在没有 "set "的属性上阻塞。任何解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2323277/

相关文章:

c# - 测试表单仅适用于本地机器的请求

c# - 将小数从 LINQ 查询转换为货币

c# - 绑定(bind)到 Canvas

java - 覆盖 log4j.properties

java - 单独通过 @Value 注入(inject)属性映射

c# - 跨 MVC Web 应用程序集中公共(public)代码的最佳方法?

c# - 引发 QuotaExceededException 的 WCF 文件传输服务

c# - 如何处理一次未找到端点异常(WCF)

wcf - 为什么我的客户发送请求如此缓慢?

javascript - 如何返回对象属性的名称?