예제 #1
0
    /// <summary>
    /// Speichert den Inhalt eines <see cref="Contact"/>-Objekts als CSV-Datei.
    /// </summary>
    /// <remarks>
    /// <para>Die Methode erzeugt bei jedem Aufruf eine neue CSV-Datei. Wenn Sie mehrere <see cref="Contact"/>-Objekte in einer
    /// gemeinsamen CSV-Datei speichern möchten, eignet sich die Methode
    /// <see cref="ContactPersistence.SaveCsv(string, IEnumerable{Contact?}, CsvCompatibility, IFormatProvider?, Encoding?)"/>
    /// oder die Erweiterungsmethode <see cref="ContactCollectionExtension.SaveCsv(IEnumerable{Contact?}, string, CsvCompatibility, IFormatProvider?, Encoding?)"/>.</para>
    /// <para>
    /// Die Methode ruft auf <paramref name="contact"/>&#160;<see cref="Contact.Clean"/> auf. Wenn
    /// die Eigenschaft <see cref="Contact.IsEmpty"/> von <paramref name="contact"/> danach <c>true</c> zurückgibt, wird eine leere Datei erzeugt.
    /// Falls es unerwünscht ist, dass die Methode <paramref name="contact"/> durch den Aufruf von <see cref="Contact.Clean"/> ändert,
    /// können Sie vorher mit <see cref="Contact.Clone"/> eine
    /// Kopie von <paramref name="contact"/> erstellen und der Methode dann die Kopie übergeben.
    /// </para>
    /// </remarks>
    /// <param name="contact">Das zu speichernde <see cref="Contact"/>-Objekt.</param>
    /// <param name="fileName">Der Dateipfad der zu erzeugenden CSV-Datei. Existiert die Datei schon, wird sie überschrieben.</param>
    /// <param name="platform">Die Plattform, für die die CSV-Datei bestimmt ist.</param>
    /// <param name="formatProvider">Ein Objekt, das kulturabhängige Formatierungsinformationen bereitstellt, oder <c>null</c>, um automatisch
    /// die am besten geeignete <see cref="CultureInfo"/> aussuchen zu lassen.</param>
    /// <param name="textEncoding">Die zu verwendende Textkodierung oder <c>null</c> für UTF-8 mit BOM (<see cref="Encoding.UTF8"/>).</param>
    /// <exception cref = "ArgumentNullException"><paramref name="contact"/> oder <paramref name="fileName"/> ist <c>null</c>.</exception>
    /// <exception cref="ArgumentException">
    /// <para><paramref name="fileName"/> ist kein gültiger Dateipfad.</para>
    /// <para>- oder -</para>
    /// <para><paramref name="platform"/> hat einen nichtdefinierten Wert.</para>
    /// </exception>
    /// <exception cref="IOException">E/A-Fehler.</exception>
    public static void SaveCsv(this Contact contact, string fileName, CsvCompatibility platform, IFormatProvider?formatProvider = null, Encoding?textEncoding = null)
    {
        if (contact is null)
        {
            throw new ArgumentNullException(nameof(contact));
        }

        CsvWriter.GetInstance(platform, formatProvider, textEncoding).Write(fileName, new Contact[] { contact });
    }
예제 #2
0
 internal static CsvReader GetInstance(CsvCompatibility platform, IFormatProvider?formatProvider, Encoding?textEncoding) => platform switch
 {
 /// <summary>
 /// Speichert den Inhalt einer Sammlung von <see cref="Contact"/>-Objekten in eine CSV-Datei.
 /// </summary>
 ///
 /// <param name="fileName">Der Dateipfad der zu erzeugenden CSV-Datei. Existiert die Datei schon, wird sie überschrieben.</param>
 /// <param name="contacts">
 /// <para>
 /// Die zu speichernde Sammlung von <see cref="Contact"/>-Objekten.
 /// </para>
 /// <para>
 /// Die Sammlung darf leer sein oder <c>null</c>-Werte
 /// enthalten. Wenn die Sammlung kein <see cref="Contact"/>-Objekt enthält, das Daten enthält, wird eine leere Datei erzeugt.
 /// </para>
 /// </param>
 /// <param name="platform">Die Plattform, für die die CSV-Datei bestimmt ist.</param>
 /// <param name="formatProvider">Ein Objekt, das kulturabhängige Formatierungsinformationen bereitstellt, oder <c>null</c>,
 /// um automatisch die am besten geeignete für <see cref="CultureInfo"/> aussuchen zu lassen.</param>
 /// <param name="textEncoding">Die zu verwendende Textkodierung oder <c>null</c> für UTF-8 mit BOM (<see cref="Encoding.UTF8"/>).</param>
 ///
 /// <remarks>
 /// <para>
 /// Die Methode ruft auf allen als Argument übergebenen <see cref="Contact"/>-Objekten <see cref="Contact.Clean"/> auf. Alle
 /// <see cref="Contact"/>-Objekte deren Eigenschaft <see cref="Contact.IsEmpty"/> danach <c>true</c> zurückgibt, werden nicht in
 /// die Datei geschrieben.
 /// </para>
 /// <para>
 /// Falls es unerwünscht ist, dass die Methode die <see cref="Contact"/>-Objekte durch den Aufruf von <see cref="Contact.Clean"/> ändert,
 /// können Sie vorher mit <see cref="Contact.Clone"/>
 /// Kopien der <see cref="Contact"/>-Objekte erstellen und der Methode dann die Kopien übergeben.
 /// </para>
 /// </remarks>
 ///
 /// <exception cref = "ArgumentNullException"><paramref name="fileName"/> oder <paramref name="contacts"/> ist <c>null</c>.</exception>
 /// <exception cref="ArgumentException">
 /// <para><paramref name="fileName"/> ist kein gültiger Dateipfad.</para>
 /// <para>- oder -</para>
 /// <para><paramref name="platform"/> hat einen nichtdefinierten Wert.</para>
 /// </exception>
 /// <exception cref="IOException">E/A-Fehler.</exception>
 public static void SaveCsv
     (string fileName, IEnumerable <Contact?> contacts, CsvCompatibility platform, IFormatProvider?formatProvider = null, Encoding?textEncoding = null)
 => CsvWriter.GetInstance(platform, formatProvider, textEncoding).Write(fileName, contacts);
예제 #4
0
 /// <summary>
 /// Speichert den Inhalt einer Sammlung von <see cref="Contact"/>-Objekten als CSV-Datei.
 /// </summary>
 ///
 /// <param name="contacts">Die zu speichernde Sammlung von <see cref="Contact"/>-Objekten.</param>
 /// <param name="fileName">Der Dateipfad der zu erzeugenden CSV-Datei. Existiert die Datei schon, wird sie überschrieben.</param>
 /// <param name="platform">Die Plattform, für die die CSV-Datei bestimmt ist.</param>
 /// <param name="formatProvider">Ein Objekt, das kulturabhängige Formatierungsinformationen bereitstellt, oder <c>null</c>, um automatisch
 /// die am besten geeignete <see cref="CultureInfo"/> aussuchen zu lassen.</param>
 /// <param name="textEncoding">Die zu verwendende Textkodierung oder <c>null</c> für UTF-8 mit BOM (<see cref="Encoding.UTF8"/>).</param>
 ///
 /// <remarks>
 /// Die Methode ruft auf jedem <see cref="Contact"/>-Objekt in <paramref name="contacts"/>&#160;<see cref="Contact.Clean"/> auf.
 /// </remarks>
 ///
 /// <exception cref = "ArgumentNullException"><paramref name="contacts"/> oder <paramref name="fileName"/> ist <c>null</c>.</exception>
 /// <exception cref="ArgumentException">
 /// <para><paramref name="fileName"/> ist kein gültiger Dateipfad.</para>
 /// <para>- oder -</para>
 /// <para><paramref name="platform"/> hat einen nichtdefinierten Wert.</para>
 /// </exception>
 /// <exception cref="IOException">E/A-Fehler.</exception>
 public static void SaveCsv(this IEnumerable <Contact?> contacts,
                            string fileName,
                            CsvCompatibility platform,
                            IFormatProvider?formatProvider = null,
                            Encoding?textEncoding          = null)
 => ContactPersistence.SaveCsv(fileName, contacts, platform, formatProvider, textEncoding);
 /// <summary>
 /// Lädt den Inhalt einer CSV-Datei als <see cref="List{T}">Liste</see> von <see cref="Contact"/>-Objekten.
 /// </summary>
 ///
 /// <param name="fileName">Der Dateipfad der CSV-Datei.</param>
 /// <param name="platform">Die Plattform, von der die CSV-Datei stammt.</param>
 /// <param name="formatProvider">Ein Objekt, das kulturabhängige Formatierungsinformationen bereitstellt, oder <c>null</c>,
 /// um automatisch die am besten geeignete <see cref="CultureInfo"/> aussuchen zu lassen.</param>
 /// <param name="textEncoding">Die zu verwendende Textkodierung oder <c>null</c> für <see cref="Encoding.UTF8"/>.</param>
 ///
 /// <returns>Inhalt der CSV-Datei als <see cref="List{T}">Liste</see> von <see cref="Contact"/>-Objekten.</returns>
 ///
 /// <remarks>Die Methode führt auf jedem zurückgegebenen <see cref="Contact"/>-Objekt <see cref="Contact.Clean"/> aus,
 /// weshalb es in der Regel nicht nötig ist, <see cref="Contact.Clean"/> in eigenem Code aufzurufen.</remarks>
 ///
 /// <exception cref="ArgumentNullException"><paramref name="fileName"/> ist <c>null</c>.</exception>
 /// <exception cref="ArgumentException">
 /// <para><paramref name="fileName"/> ist kein gültiger Dateipfad.</para>
 /// <para>- oder -</para>
 /// <para><paramref name="platform"/> hat einen nichtdefinierten Wert.</para>
 /// </exception>
 /// <exception cref="IOException">
 /// <para>Es kann nicht auf den Datenträger zugegriffen werden</para>
 /// <para>- oder -</para>
 /// <para>die Datei enthält ungültiges CSV.</para>
 /// </exception>
 public static List <Contact> LoadCsv
     (string fileName, CsvCompatibility platform, IFormatProvider?formatProvider = null, Encoding?textEncoding = null)
 => CsvReader.GetInstance(platform, formatProvider, textEncoding).Read(fileName);