Hilfsroutinen für die "Version"-Klasse

Nachfolgend ein paar Hilfsroutinen („Extension methods“) für den Umgang mit Instanzen der Version-Klasse.

/// <summary>
/// Hilfsroutinen für den Umgang mit der "Version"-Klasse.
/// </summary>
public static class VersionExtensions
{
    /// <summary>
    /// ".0"-en am Ende weglassen. Z. B. wird aus "5.1.0.0" dann "5.1"
    /// und aus "5.1.28.0" dann "5.1.28".
    /// </summary>
    public static string ToStringIntelligent(this Version version)
    {
        if (version == null || version == new Version()) return string.Empty;
        var v = version.ToString();

        while (v.EndsWith(@".0")) v = v.Substring(0, v.Length - 2);

        return v;
    }
}

Und natürlich auch gleich die dazugehörigen Unit-Tests:

[Test]
public void VersionTests()
{
    Assert.AreEqual(new Version().ToStringIntelligent(), string.Empty);

    Assert.AreEqual(new Version(@"1.0").ToStringIntelligent(), @"1");
    Assert.AreEqual(new Version(@"1.0.0").ToStringIntelligent(), @"1");
    Assert.AreEqual(new Version(@"1.0.0.0").ToStringIntelligent(), @"1");

    Assert.AreEqual(new Version(@"1.2").ToStringIntelligent(), @"1.2");
    Assert.AreEqual(new Version(@"1.2.0").ToStringIntelligent(), @"1.2");
    Assert.AreEqual(new Version(@"1.2.0.0").ToStringIntelligent(), @"1.2");

    Assert.AreEqual(new Version(@"1.2.3").ToStringIntelligent(), @"1.2.3");
    Assert.AreEqual(new Version(@"1.2.3.0").ToStringIntelligent(), @"1.2.3");

    Assert.AreEqual(new Version(@"1.2.3.4").ToStringIntelligent(), @"1.2.3.4");
}