属性 没有设置有什么问题?

What's wrong with Property without set?

我有一个 class 用于 WCF 服务。

接口已定义

[WebGet(ResponseFormat = WebMessageFormat.Json,
        UriTemplate = "GetMyStuff/?p={param}",
        BodyStyle = WebMessageBodyStyle.Bare)]
MyResponseObject MyMethod(string param);

其中我拥有的属性

public bool IsDecorated {
  get {
    return !String.IsNullOrEmpty(Decoration);
  }
}

生成的请求拒绝加载。

我加了一个

set { }

成功了。

有什么线索吗?

只读属性未序列化。因为当它们被反序列化时,它们将不会有 setter。为避免该问题,只读属性首先不会序列化。

同样的情况 setprivate 就像

public List<Foo> Bar {get; private set;}`.

阅读
Why are properties without a setter not serialized
Force XML serialization to serialize readonly property
Why isn't my public property serialized by the XmlSerializer?

编译器不关心你里面有没有写逻辑setter。它只关心你的 属性 应该有一个 setter.