And*_*rey 94 c# wcf properties datacontractserializer
我有一些类,我作为服务方法的结果传递,并且该类具有get-only属性:
[DataContract]
public class ErrorBase
{
[DataMember]
public virtual string Message { get { return ""; } }
}
Run Code Online (Sandbox Code Playgroud)
我在服务方面遇到异常:
System.Runtime.Serialization.InvalidDataContractException:类型为"MyNamespace.ErrorBase"的属性"Message"没有set方法.
我必须将此属性作为唯一的getter,我不能允许用户为其赋值.我可以使用的任何解决方法?或者我错过了一些额外的属性?
rh.*_*rh. 103
给Message一个公共getter但是受保护的setter,这样只有子类(和DataContractSerializer,因为它作弊:)可能会修改该值.
Rik*_*tel 11
[DataMember(Name = "PropertyName")]
public string PropertyName
{
get
{
return "";
}
private set
{ }
}
Run Code Online (Sandbox Code Playgroud)
你就不能有一个“什么都不做”的二传手吗??
[DataContract]
public class ErrorBase
{
[DataMember]
public virtual string Message
{
get { return ""; }
set { }
}
}
Run Code Online (Sandbox Code Playgroud)
或者 DataContract 序列化程序也会对此感到厌烦吗??
小智 5
如果您只有一个吸气剂,为什么还需要序列化该属性.您似乎可以删除只读属性的DataMember属性,并且序列化程序将忽略该属性.