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");
}