Как сериализировать только определенные свойства объектов

webview.setWebViewClient(new WebViewClient());
webview.loadUrl(url);

Установить клиент веб-просмотра.

5
задан alex2k8 4 June 2009 в 15:43
поделиться

4 ответа

Я сделал что-то похожее на себя с сериализатором JavaScript в прошлом. В моем случае я только хотел сериализовать Nullbable свойства в объекте, который содержал значение. Я сделал это, используя размышления, проверяя свойство для значения и добавив свойство в словарь e.g.

public static Dictionary<string,object> CollectFilledProperties(object instance)
{
    Dictionary<string,object> filledProperties = new Dictionary<string,object>();
    object data = null;

    PropertyInfo[] properties = instance.GetType().GetProperties();
    foreach (PropertyInfo property in properties)
    {
        data = property.GetValue(instance, null);

        if (IsNullable(property.PropertyType) && data == null)
        {
            // Nullable fields without a value i.e. (still null) are ignored.
            continue;
        }

        // Filled has data.
        filledProperties[property.Name] = data;
    }

    return filledProperties;
}

public static bool IsNullable(Type checkType)
{
    if (checkType.IsGenericType && checkType.GetGenericTypeDefinition() == typeof(Nullable<>))
    {
        // We are a nullable type - yipee.
        return true;
    }
    return false;
}

Тогда вместо сериализации оригинального объекта вы передаете словарь и ваш дядя Боб.

4
ответ дан 18 December 2019 в 05:36
поделиться

Довольно просто - просто украсьте методы, которые вы хотите игнорировать, атрибутом [ScriptIgnore] .

24
ответ дан 18 December 2019 в 05:36
поделиться

Есть атрибуты, которые можно применять к классам и / или свойствам, которые управляют сериализацией. Атрибуты, управляющие сериализацией .

3
ответ дан 18 December 2019 в 05:36
поделиться

Как насчет тега атрибута [NonSerialized ()] ?

    class Foo  
    {
        field A;

        [NonSerialized()]
        field B;

        [NonSerialized()]
        field C;

        field D;  
    }
1
ответ дан 18 December 2019 в 05:36
поделиться
Другие вопросы по тегам:

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