Die XML-Deserialisierung wird an die Liste angehängt

Ich versuche, einige Einstellungen aus einer XML-Datei zu deserialisieren. Die problematische Eigenschaft / das zugrunde liegende Feld wird genanntAlertColors. Ich initialisiere das zugrunde liegende Feld mit Weiß, Gelb und Rot, um sicherzustellen, dass eine neue Instanz dieser Klasse eine gültige Farbeinstellung hat. Aber wenn ich deserialisiere,_colorArgb Am Ende stehen sechs Werte zur Verfügung, die ersten drei sind die Initialisierungswerte und die letzten drei sind diejenigen, die aus der XML-Datei gelesen werden. Aber das EigentumAlertColors Hänge nicht an das Feld an, sondern ändere seine Elemente. Warum bekomme ich ein Feld mit sechs Farben?

Hier ist der Code:

    private List<int> _colorArgb = new List<int>(new int[] { Color.White.ToArgb(), Color.Yellow.ToArgb(), Color.Red.ToArgb() });   

    public List<int> AlertColors
    {
        get
        {
            return _colorArgb;
        }

        set
        {
            for (int i = 0; i < Math.Min(_colorArgb.Count, value.Count); i++)
            {
                if (_colorArgb[i] != value[i])
                {
                    HasChanged = true;
                }
            }

            _colorArgb = value;
        }
    }

    public bool Deserialize(string filePath)
    {
        if (!File.Exists(filePath))
        {
            Logger.Log("Error while loading the settings. File does not exist.");

            return false;
        }

        FileStream fileStream = null;

        try
        {
            fileStream = new FileStream(filePath, FileMode.Open);
            System.Xml.Serialization.XmlSerializerFactory xmlSerializerFactory =
                new XmlSerializerFactory();
            System.Xml.Serialization.XmlSerializer xmlSerializer =
                xmlSerializerFactory.CreateSerializer(typeof(Settings));

            Settings deserializedSettings = (Settings)xmlSerializer.Deserialize(fileStream);

            GetSettings(deserializedSettings);

            Logger.Log("Settings have been loaded successfully from the file " + filePath);
        }
        catch (IOException iOException)
        {
            Logger.Log("Error while loading the settings. " + iOException.Message);

            return false;
        }
        catch (ArgumentException argumentException)
        {
            Logger.Log("Error while loading the settings. " + argumentException.Message);

            return false;
        }
        catch (InvalidOperationException invalidOperationException)
        {
            Logger.Log("Error while loading the settings. Settings file is not supported." +
                invalidOperationException.Message);

            return false;
        }
        finally
        {
            if (fileStream != null)
                fileStream.Close();

            FilePath = filePath;
        }

        return true;
    }

    protected void GetSettings(Settings settings)
    {
        AlertColors = settings.AlertColors;
    }

Und der relevante Teil der XML-Datei, die ich deserialisiere:

  <AlertColors>
    <int>-1</int>
    <int>-15</int>
    <int>-65536</int>
  </AlertColors>

Antworten auf die Frage(3)

Ihre Antwort auf die Frage