public static bool TryParse(string versionString, out SemanticVersion semanticVersion)
{
if (versionString == null)
{
semanticVersion = null;
return true;
}
var stableParts = versionString.Split('.');
if (stableParts.Length > 3)
{
semanticVersion = null;
return false;
}
int major;
if (!int.TryParse(stableParts[0], out major))
{
semanticVersion = null;
return false;
}
var parsedVersion = new SemanticVersion
{
Major = major
};
if (stableParts.Length > 1)
{
int minor;
if (!int.TryParse(stableParts[1], out minor))
{
semanticVersion = null;
return false;
}
parsedVersion.Minor = minor;
}
if (stableParts.Length > 2)
{
int patch;
if (!int.TryParse(stableParts[2], out patch))
{
semanticVersion = null;
return false;
}
parsedVersion.Patch = patch;
}
semanticVersion = parsedVersion;
return true;
}