VcfAsString Method

Serializes vCards as a String that represents the content of a VCF file.

Definition

Namespace: FolkerKinzel.VCards
Assembly: FolkerKinzel.VCards (in FolkerKinzel.VCards.dll) Version: 8.0.1+a91cc3f0fd39aeb548e16006a60ca9dd10a304a2
C#
public static string AsString(
	IEnumerable<VCard?> vCards,
	VCdVersion version = VCdVersion.V3_0,
	ITimeZoneIDConverter? tzConverter = null,
	VcfOpts options = VcfOpts.Default
)

Parameters

vCards  IEnumerableVCard
The VCard objects to be serialized. The collection may be empty or may contain null values.
version  VCdVersion  (Optional)
The vCard version used for the serialization.
tzConverter  ITimeZoneIDConverter  (Optional)
An object that implements ITimeZoneIDConverter to convert IANA time zone names to UTC offsets, or null.
options  VcfOpts  (Optional)
Options for serializing VCF. The flags can be combined.

Return Value

String
vCards, serialized as a String, which represents the content of a VCF file.

Remarks

  Caution

Although the method itself is thread-safe, the VCard objects passed to the method are not. Block read and write access to these VCard objects, while this method is being executed!

The method may serialize more vCards than were originally elements in the argument vCards. This happens when a VCF file is saved as vCard 4.0 and when in the properties Members or Relations of a VCard object further VCard objects can be found.

In the same way the method behaves, if a vCard 2.1 or 3.0 is serialized with the option AppendAgentAsSeparateVCard and if in the Relations property of a VCard object an instance is located on whose RelationType parameter the Agent flag is set.

Example

C#
using FolkerKinzel.VCards;
using FolkerKinzel.VCards.Enums;

namespace Examples;

public static class NoPidExample
{
    public static void RemovePropertyIdentification()
    {
        const string vcf = """
            BEGIN:VCARD
            VERSION:4.0
            REV:20231121T200704Z
            UID:urn:uuid:5ad11c78-f4b1-4e70-b0ef-6f4c29cf97ea
            FN;PID=1.1:John Doe
            CLIENTPIDMAP:1;http://other.com/
            END:VCARD
            """;

        VCard vCard = Vcf.Parse(vcf)[0];

        // Removes all existing PIDs and CLIENTPIDMAPs
        vCard.Sync.Reset();

        Console.WriteLine(Vcf.AsString(vCard, VCdVersion.V4_0));
    }
}

/*
Console Output:

BEGIN:VCARD
VERSION:4.0
REV:20231121T201552Z
UID:urn:uuid:5ad11c78-f4b1-4e70-b0ef-6f4c29cf97ea
FN:John Doe
END:VCARD
*/

Exceptions

ArgumentNullExceptionvCards is null.
ArgumentOutOfRangeExceptionversion is not a defined value of the VcfOpts enum.
OutOfMemoryExceptionThe system is out of memory.

See Also