Механизм СледуетСериализировать ... больше не работает - PullRequest
1 голос
/ 21 мая 2019

У меня есть этот кусок кода:

[XmlIgnore]
public static Configuration Config;
[XmlElement("Configuration")]
public Configuration Configuration // property in myViewModel
{
    get { return Config; }
    set { Config = value; }
}

bool serializeConfig = true;

bool ShouldSerializeConfiguration()
{
    return serializeConfig;
}
public void ResetConfiguration()
{
    serializeConfig = true;
}

и функция, в которой я его использую:

private void SaveToClipboard()
{
    serializeConfig = false; // toggle no serialization
    try
    {
        XmlSerializer serializer = new XmlSerializer(typeof(myViewModel)); // object that the Configuration is in

        using (StringWriter stream = new StringWriter())
        {                
            serializer.Serialize(stream, this);                
            Clipboard.SetText(stream.ToString());
        }
        serializeConfig = true; // toggle back
    }
    catch (InvalidOperationException e)
    {
        // etc.
    }            
}

Я использую serializeConfig для переключения сериализации объекта конфигурации.Я сериализую в двух местах, одно из которых не требует настройки.Но он не работает так, как рекламируется.

С [XmlIgnore] он пропускает конфигурацию как следует.

SaveToClipboard - это метод myViewModel, который сериализуется.

Этообъект больше не поддерживается или что?Я использую последнее обновление VS2017, на win10Pro.

1 Ответ

2 голосов
/ 21 мая 2019

При использовании с XmlSerializer метод должен быть public, т.е.

public bool ShouldSerializeConfiguration()
{
    return serializeConfig;
}

Это не относится к некоторым другим сценариям, но XmlSerializer по сути работает как независимо скомпилированныйсборка, поэтому применяются правила полной видимости.

...