Почему префикс подчеркивания для открытых свойств в моем наборе результатов JSON - PullRequest
0 голосов
/ 14 сентября 2011

Я использую ASP.NET WCF для возврата объектов .NET в формате JSON через вызовы jquery. Когда я изменил свои классы .NET на сериализуемый, который я предоставляю через методы в своем классе WCF, имена свойств объектов внезапно изменились с:

Имя для _Name.

Так что весь код в моих классах JavaScript, где я получаю доступ к объектам json, неверен.

Почему свойства теперь имеют префикс подчеркивания? И как мне изменить его обратно, не удаляя сериализуемый атрибут на классах?

Спасибо. Christian

1 Ответ

4 голосов
/ 14 сентября 2011

Когда вы говорите, что «изменили класс на сериализуемый», означает ли это, что вы добавили к ним атрибут [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; }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...