您可以创建一个扩展方法为您执行添加。仍然需要自定义代码;但如果你在很多地方这样做,有这样一个辅助方法可能是有用的。以下是一些可能有用的功能。
public static class VersionExtension {
public static Version IncrementRevision(this Version version) {
return AddVersion(version, 0, 0, 0, 1);
}
public static Version IncrementBuild(this Version version) {
return IncrementBuild(version, true);
}
public static Version IncrementBuild(this Version version, bool resetLowerNumbers) {
return AddVersion(version, 0, 0, 1, resetLowerNumbers ? -version.Revision : 0);
}
public static Version IncrementMinor(this Version version) {
return IncrementMinor(version, true);
}
public static Version IncrementMinor(this Version version, bool resetLowerNumbers) {
return AddVersion(version, 0, 1, resetLowerNumbers ? -version.Build : 0, resetLowerNumbers ? -version.Revision : 0);
}
public static Version IncrementMajor(this Version version) {
return IncrementMajor(version, true);
}
public static Version IncrementMajor(this Version version, bool resetLowerNumbers) {
return AddVersion(version, 1, resetLowerNumbers ? -version.Minor : 0, resetLowerNumbers ? -version.Build : 0, resetLowerNumbers ? -version.Revision : 0);
}
public static Version AddVersion(this Version version, string addVersion) {
return AddVersion(version, new Version(addVersion));
}
public static Version AddVersion(this Version version, Version addVersion) {
return AddVersion(version, addVersion.Major, addVersion.Minor, addVersion.Build, addVersion.Revision);
}
public static Version AddVersion(this Version version, int major, int minor, int build, int revision) {
return SetVersion(version, version.Major + major, version.Minor + minor, version.Build + build, version.Revision + revision);
}
public static Version SetVersion(this Version version, int major, int minor, int build, int revision) {
return new Version(major, minor, build, revision);
}
/*
//one day we may even be able to do something like this...
//https://github.com/dotnet/csharplang/issues/192
public static Version operator +(Version version, int revision) {
return AddVersion(version, 0, 0, 0, revision);
}
public static Version operator ++(Version version) {
return IncrementVersion(version);
}
*/
}
示例用法
void Main()
{
Version myVersion = new Version ("1.2.3.4");
myVersion = myVersion.IncrementRevision();
Console.WriteLine(myVersion); //1.2.3.5
myVersion = myVersion.IncrementMinor();
Console.WriteLine(myVersion); //1.3.0.0
}
由于http://msdn.microsoft.com/en-us/library/system.version(V = vs.110的[System.Version](属性).aspx)是只读的。为什么不能实现你自己的功能来分配值 – 2014-09-22 07:13:22
请你可以在这里放一些示例代码我如何实现我自己的功能? – 2014-09-22 07:16:08
这取决于你想要的格式。最简单的就是将该值存储为int,然后将其增加。如果你真的想要像上面显示的那样,那么你需要拆分字符串,将值转换为数字,增加一个或多个,然后将它们加回到字符串 – 2014-09-22 07:27:01