我使用ASP.NET WCF通过jquery调用以JSON格式返回.NET对象。 当我将.NET类更改为serializable时,我通过WCF类中的方法公开,对象属性名称突然改变为:
名称为_Name。
因此,我访问json对象的javascript类中的所有代码都是错误的。
为什么属性现在有下划线前缀? 如何在不删除类的serializable属性的情况下将其更改回来?
感谢。 基督教
答案 0 :(得分:4)
当您说“将类更改为可序列化”时,是否表示您在其上添加了[Serializable]
属性?如果是这种情况:标记有该属性的类将所有字段序列化(无属性)。在下面的示例中,此类没有任何属性,并且它具有无参数构造函数,因此它被视为“POCO”(普通旧CLR对象)类型。 POCO类型将其公共成员(字段或属性)序列化。如果用[Serializable]装饰它,那么它将属于可序列化规则。
为什么需要使用[Serializable]标记您的类型?如果您确实需要这样做(对于某些旧版序列化程序),您还可以使用[DataContract]
和[DataMember]
属性来装饰您的类型,这些属性受WCF序列化程序的尊重。您需要在类型上添加[DataContract],并在要序列化的属性上添加[DataMember]。
public class Person
{
private string _Name;
private int _Age;
public string Name {
get { return this._Name; }
set { this._Name = value; }
}
public string Age {
get { return this._Age; }
set { this._Age = value; }
}
}