예제 #1
0
        public ReleaseVersion WithCandidateLevel(ReleaseCandidateLevel candidateLevel)
        {
            if (CandidateLevel == candidateLevel)
            {
                return(this);
            }

            return(new ReleaseVersion(Major, Minor, Patch, candidateLevel, Candidate, Build));
        }
예제 #2
0
        public ReleaseVersion(
            int major,
            int minor,
            int patch,
            ReleaseCandidateLevel candidateLevel = ReleaseCandidateLevel.Stable,
            int candidate = 0,
            int build     = 0)
        {
            if (major < 0 || major > 99)
            {
                throw new ArgumentOutOfRangeException(nameof(major), "must be 0 <= X <= 99");
            }

            if (minor < 0 || minor > 99)
            {
                throw new ArgumentOutOfRangeException(nameof(minor), "must be 0 <= X <= 99");
            }

            if (patch < 0 || patch > 99)
            {
                throw new ArgumentOutOfRangeException(nameof(patch), "must be 0 <= X <= 99");
            }

            if (candidate < 0 || candidate > 99)
            {
                throw new ArgumentOutOfRangeException(nameof(candidate), "must be 0 <= X <= 99");
            }

            if (build < 0 || build > 9999)
            {
                throw new ArgumentOutOfRangeException(nameof(build), "must be 0 <= X <= 9999");
            }

            switch (candidateLevel)
            {
            case ReleaseCandidateLevel.Local:
            case ReleaseCandidateLevel.Dev:
            case ReleaseCandidateLevel.Alpha:
            case ReleaseCandidateLevel.Beta:
            case ReleaseCandidateLevel.Preview:
            case ReleaseCandidateLevel.StableCandidate:
                break;

            case ReleaseCandidateLevel.Stable:
                if (candidate != 0)
                {
                    throw new ArgumentOutOfRangeException(
                              nameof(candidate),
                              $"must be 0 if {nameof (candidateLevel)} is Stable");
                }
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(candidateLevel));
            }

            Major          = (byte)major;
            Minor          = (byte)minor;
            Patch          = (byte)patch;
            CandidateLevel = candidateLevel;
            Candidate      = (byte)candidate;
            Build          = (ushort)build;
        }