Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ApplicationId.cs
Go to the documentation of this file.
2using System.Text;
3
4namespace System;
5
6public sealed class ApplicationId
7{
8 private readonly byte[] _publicKeyToken;
9
10 public string? Culture { get; }
11
12 public string Name { get; }
13
14 public string? ProcessorArchitecture { get; }
15
16 public Version Version { get; }
17
18 public byte[] PublicKeyToken => (byte[])_publicKeyToken.Clone();
19
20 public ApplicationId(byte[] publicKeyToken, string name, Version version, string? processorArchitecture, string? culture)
21 {
22 if (name == null)
23 {
24 throw new ArgumentNullException("name");
25 }
26 if (name.Length == 0)
27 {
29 }
30 if (version == null)
31 {
32 throw new ArgumentNullException("version");
33 }
34 if (publicKeyToken == null)
35 {
36 throw new ArgumentNullException("publicKeyToken");
37 }
38 _publicKeyToken = (byte[])publicKeyToken.Clone();
39 Name = name;
40 Version = version;
41 ProcessorArchitecture = processorArchitecture;
43 }
44
49
50 public override string ToString()
51 {
52 Span<char> initialBuffer = stackalloc char[128];
53 ValueStringBuilder valueStringBuilder = new ValueStringBuilder(initialBuffer);
54 valueStringBuilder.Append(Name);
55 if (Culture != null)
56 {
57 valueStringBuilder.Append(", culture=\"");
58 valueStringBuilder.Append(Culture);
59 valueStringBuilder.Append('"');
60 }
61 valueStringBuilder.Append(", version=\"");
62 valueStringBuilder.Append(Version.ToString());
63 valueStringBuilder.Append('"');
64 if (_publicKeyToken != null)
65 {
66 valueStringBuilder.Append(", publicKeyToken=\"");
68 valueStringBuilder.Append('"');
69 }
70 if (ProcessorArchitecture != null)
71 {
72 valueStringBuilder.Append(", processorArchitecture =\"");
73 valueStringBuilder.Append(ProcessorArchitecture);
74 valueStringBuilder.Append('"');
75 }
76 return valueStringBuilder.ToString();
77 }
78
79 public override bool Equals([NotNullWhen(true)] object? o)
80 {
81 if (!(o is ApplicationId applicationId))
82 {
83 return false;
84 }
85 if (!object.Equals(Name, applicationId.Name) || !object.Equals(Version, applicationId.Version) || !object.Equals(ProcessorArchitecture, applicationId.ProcessorArchitecture) || !object.Equals(Culture, applicationId.Culture))
86 {
87 return false;
88 }
89 if (_publicKeyToken.Length != applicationId._publicKeyToken.Length)
90 {
91 return false;
92 }
93 for (int i = 0; i < _publicKeyToken.Length; i++)
94 {
95 if (_publicKeyToken[i] != applicationId._publicKeyToken[i])
96 {
97 return false;
98 }
99 }
100 return true;
101 }
102
103 public override int GetHashCode()
104 {
105 return Name.GetHashCode() ^ Version.GetHashCode();
106 }
107}
ApplicationId(byte[] publicKeyToken, string name, Version version, string? processorArchitecture, string? culture)
override int GetHashCode()
override bool Equals([NotNullWhen(true)] object? o)
override string ToString()
readonly byte[] _publicKeyToken
ApplicationId Copy()
static void EncodeToUtf16(ReadOnlySpan< byte > bytes, Span< char > chars, Casing casing=Casing.Upper)
static string Argument_EmptyApplicationName
Definition SR.cs:2150
Definition SR.cs:7
Version(int major, int minor, int build, int revision)
Definition Version.cs:47
override string ToString()
Definition Version.cs:220
override int GetHashCode()
Definition Version.cs:211
Span< char > AppendSpan(int length)