Существует ли атрибут для пропуска пустых массивов в XML-сериализации c#?

Например, будет работать:
$('li[data-total="0"]').addClass('new_messages');

Если вы просто хотите добавить стиль CSS, вам не нужен класс, но вы можете просто использовать селектор атрибутов CSS: [ 119]

li[data-total="0"] { 
    background : red;
}

$('li[data-total="0"]')
  .addClass('new_messages')
  .parents('li')
    .addClass('new_messages');
.new_messages {
background : rgba(255,0,0,.2);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
    <li data-total="0">Node 1</li>
    <li data-total="4">Node 2</li>
    <li data-total="1">Node 3
        <ul>
            <li data-total="1">sub node 1</li>
            <li data-total="2">sub node 2
                <ul>
                    <li data-total="0">test node 1</li>
                    <li data-total="2">test node 2</li>
                    <li data-total="7">test node 3</li>
                </ul>
            </li>
        </ul>
    </li>
    <li data-total="0">Node 4</li>
</ul>

8
задан Robert Harvey 27 March 2013 в 23:39
поделиться

1 ответ

Ну, Вы могли, возможно, добавить a ShouldSerializeFoo() метод:

using System;
using System.ComponentModel;
using System.Xml.Serialization;
[Serializable]
public class MyEntity
{
    public string Key { get; set; }

    public string[] Items { get; set; }

    [EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
    public bool ShouldSerializeItems()
    {
        return Items != null && Items.Length > 0;
    }
}

static class Program
{
    static void Main()
    {
        MyEntity obj = new MyEntity { Key = "abc", Items = new string[0] };
        XmlSerializer ser = new XmlSerializer(typeof(MyEntity));
        ser.Serialize(Console.Out, obj);
    }
}

ShouldSerialize{name} башмак распознан, и метод называют, чтобы видеть, включать ли свойство в сериализацию. Существует также альтернатива {name}Specified шаблон, который позволяет Вам также обнаруживать вещи при десериализации (через метод set):

[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
[XmlIgnore]
public bool ItemsSpecified
{
    get { return Items != null && Items.Length > 0; }
    set { } // could set the default array here if we want
}
17
ответ дан 5 December 2019 в 10:05
поделиться
Другие вопросы по тегам:

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