-
Notifications
You must be signed in to change notification settings - Fork 0
/
VersionInfo.cs
149 lines (111 loc) · 3.92 KB
/
VersionInfo.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
//
// @(#) VersionInfo.cs
//
// Project: usis.Data.LocalDb
// System: Microsoft Visual Studio 2022
// Author: Udo Schäfer
//
// Copyright (c) 2018-2023 usis GmbH. All rights reserved.
using System;
using System.Text;
namespace usis.Data.LocalDb
{
// -----------------
// VersionInfo class
// -----------------
/// <summary>
/// Provides information about a SQL Server Express LocalDB version.
/// </summary>
public class VersionInfo : IEquatable<VersionInfo>
{
#region construction
// ------------
// construction
// ------------
internal VersionInfo(LocalDBVersionInfo info)
{
Name = info.Version.ToString(Encoding.Unicode);
Exists = info.Exists;
Version = new Version((int)info.Major, (int)info.Minor, (int)info.Build, (int)info.Revision);
}
#endregion
#region properties
// -------------
// Name property
// -------------
/// <summary>
/// Gets the LocalDB version name.
/// </summary>
/// <value>
/// The LocalDB version name.
/// </value>
public string Name { get; }
// ---------------
// Exists property
// ---------------
/// <summary>
/// Gets a value indicating whether the instance files exist on disk.
/// </summary>
/// <value>
/// <c>true</c> if the instance files exist on disk; otherwise,
/// <c>false</c>.
/// </value>
public bool Exists { get; }
// ----------------
// Version property
// ----------------
/// <summary>
/// Gets the LocalDB version for the instance.
/// </summary>
/// <value>
/// The LocalDB version for the instance.
/// </value>
public Version Version { get; }
#endregion
#region overrides
// ---------------
// ToString method
// ---------------
/// <summary>
/// Returns a <see cref="string"/> that represents this instance.
/// </summary>
/// <returns>A <see cref="string"/> that represents this instance.
/// </returns>
public override string ToString() => Name;
// -------------
// Equals method
// -------------
/// <summary>
/// Determines whether the specified <see cref="object"/>, is equal to
/// this instance.
/// </summary>
/// <param name="obj">The <see cref="object"/> to compare with this
/// instance.</param>
/// <returns><c>true</c> if the specified <see cref="object"/> is equal
/// to this instance; otherwise, <c>false</c>.</returns>
public override bool Equals(object obj) => IsEqualTo(obj as VersionInfo);
// ------------------
// GetHashCode method
// ------------------
/// <summary>
/// Returns a hash code for this instance.
/// </summary>
/// <returns>A hash code for this instance, suitable for use in hashing
/// algorithms and data structures like a hash table.</returns>
public override int GetHashCode() => Version.GetHashCode();
#endregion
#region IEquatable<VersionInfo> implementation
// -------------
// Equals method
// -------------
bool IEquatable<VersionInfo>.Equals(VersionInfo other) => IsEqualTo(other);
#endregion
#region private methods
// ----------------
// IsEqualTo method
// ----------------
private bool IsEqualTo(VersionInfo other) => other != null && Version.Equals(other.Version);
#endregion
}
}
// eof "VersionInfo.cs"