XmlSerializer и обнуляемые атрибуты

Также попробуйте эти (IE8 + Chrome. Я не знаю, для FF):

function addEvent(obj, type, fn) {
    eval('obj.on'+type+'=fn');
}

function removeEvent(obj, type) {
    eval('obj.on'+type+'=null');
}

// Use :

function someFunction (someArg) {alert(someArg);}

var object=document.getElementById('somObject_id') ;
var someArg="Hi there !";
var func=function(){someFunction (someArg)};

// mouseover is inactive
addEvent (object, 'mouseover', func);
// mouseover is now active
addEvent (object, 'mouseover');
// mouseover is inactive

Надеюсь, нет опечаток: -)

30
задан Andras Zoltan 14 July 2010 в 21:32
поделиться

2 ответа

Реализуйте интерфейс IXmlSerializable в своем классе. Затем вы можете обрабатывать особые случаи, такие как значения NULL, в методах ReadXML и WriteXML . На странице документации MSDN есть хороший пример. .

 
class YourClass : IXmlSerializable
{
    public int? Age
    {
        get { return this.age; }
        set { this.age = value; }
    }

    //OTHER CLASS STUFF//

    #region IXmlSerializable members
    public void WriteXml (XmlWriter writer)
    {
        if( Age != null )
        {
            writer.WriteValue( Age )
        }
    }

    public void ReadXml (XmlReader reader)
    {
        Age = reader.ReadValue();
    }

    public XmlSchema GetSchema()
    {
        return(null);
    }
    #endregion
}
10
ответ дан 28 November 2019 в 00:23
поделиться

У меня была аналогичная проблема с некоторым кодом, над которым я работал, и я решил просто использовать строку для свойства, которое я сериализовал и десериализовал. В итоге я получил что-то вроде этого:

[XmlAttribute("Age")]
public string Age
{
    get 
    { 
        if (this.age.HasValue)
            return this.age.Value.ToString(); 
        else
            return null;
    }
    set 
    { 
        if (value != null)
            this.age = int.Parse(value);
        else
            this.age = null;
    }
}

[XmlIgnore]
public int? age;
17
ответ дан 28 November 2019 в 00:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: