由于错误显示我没有为我的属性设置setter,但我不想要一个setter,它应该是readonly。
答案 0 :(得分:15)
已编辑:制作二传手internal
。
这仍然可以在程序集中设置,但它是一个很好的技巧,当用于位于其他人使用的程序集中的数据对象时效果很好,因为那些使用程序集将无法设置属性,但是各种序列化器都可以。
答案 1 :(得分:4)
请记住,WCF需要从其序列化表示(通常是XML)创建对象的实例,如果属性没有setter,则无法分配值。对象不在客户端和服务器之间传输,而只是在序列化表示中传输,因此需要在每一端重建对象。
答案 2 :(得分:2)
您的问题有点模糊,但我想这就是您正在寻找的答案:
默认序列化仅适用于读写属性,因为如果不设置属性值,则无法对对象进行重新水化。如果您希望它与只读属性一起使用,则需要自己实现序列化接口,而不是仅添加属性。
假设您正在使用DataContract序列化,我认为最好的选择是实现ISerializable并自己实现这些方法。