1
0

Updated to C# 12

This commit is contained in:
2024-01-14 13:10:33 +01:00
parent 9cd1344266
commit 27cd54fb30
51 changed files with 637 additions and 379 deletions

View File

@@ -1,7 +1,5 @@
using System.Text;
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("UnitTests")]
namespace System
{
/// <summary>

View File

@@ -1,6 +1,5 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace System
@@ -41,13 +40,5 @@ namespace System
/// <returns>The description or the string representation of the value.</returns>
public static string GetDescription(this Enum value)
=> value.GetAttribute<DescriptionAttribute>()?.Description ?? value.ToString();
/// <summary>
/// Returns the name from <see cref="DisplayAttribute"/>.
/// </summary>
/// <param name="value">The enum value.</param>
/// <returns>The display name or the string representation of the value.</returns>
public static string GetDisplayName(this Enum value)
=> value.GetAttribute<DisplayAttribute>()?.Name ?? value.ToString();
}
}

View File

@@ -56,16 +56,11 @@
return new DisposableReadWriteLock(rwLock, LockMode.Write);
}
private struct DisposableReadWriteLock : IDisposable
private struct DisposableReadWriteLock(ReaderWriterLockSlim rwLock, LockMode lockMode)
: IDisposable
{
private readonly ReaderWriterLockSlim _rwLock;
private LockMode _lockMode;
public DisposableReadWriteLock(ReaderWriterLockSlim rwLock, LockMode lockMode)
{
_rwLock = rwLock;
_lockMode = lockMode;
}
private readonly ReaderWriterLockSlim _rwLock = rwLock;
private LockMode _lockMode = lockMode;
public void Dispose()
{

View File

@@ -40,7 +40,7 @@ namespace System.IO
}
while (ch != eol);
return encoding.GetString(bytes.ToArray()).Trim();
return encoding.GetString([.. bytes]).Trim();
}
/// <summary>
@@ -73,7 +73,7 @@ namespace System.IO
}
while (ch != eol);
return encoding.GetString(bytes.ToArray()).Trim();
return encoding.GetString([.. bytes]).Trim();
}
}
}

View File

@@ -15,7 +15,12 @@ namespace System
/// <summary>
/// String extensions.
/// </summary>
#if NET8_0_OR_GREATER
public static partial class StringExtensions
#else
public static class StringExtensions
#endif
{
/// <summary>
/// Converts a hex string into a byte array.
@@ -32,8 +37,13 @@ namespace System
if (str.Length % 2 == 1)
yield break;
#if NET8_0_OR_GREATER
if (InvalidHexCharRegex().IsMatch(str))
yield break;
#else
if (Regex.IsMatch(str, "[^0-9a-fA-F]"))
yield break;
#endif
for (int i = 0; i < str.Length; i += 2)
yield return Convert.ToByte(str.Substring(i, 2), 16);
@@ -179,14 +189,14 @@ namespace System
{
var dnsClientType = Type.GetType("DNS.Client.DnsClient, DNS") ?? throw new DllNotFoundException("The DNS NuGet package is required: https://www.nuget.org/packages/DNS/7.0.0");
var recordTypeType = Type.GetType("DNS.Protocol.RecordType, DNS");
var resolveMethodInfo = dnsClientType.GetMethod("Resolve", new[] { typeof(string), recordTypeType, typeof(CancellationToken) });
var resolveMethodInfo = dnsClientType.GetMethod("Resolve", [typeof(string), recordTypeType, typeof(CancellationToken)]);
bool exists = false;
foreach (var nameserver in nameservers)
{
object dnsClient = Activator.CreateInstance(dnsClientType, new object[] { nameserver });
object dnsClient = Activator.CreateInstance(dnsClientType, [nameserver]);
var waitTask = Task.Run(async () => await resolveMethodInfo.InvokeAsync<object>(dnsClient, new object[] { mailAddress.Host, 15, CancellationToken.None })); // 15 = MX Record
var waitTask = Task.Run(async () => await resolveMethodInfo.InvokeAsync<object>(dnsClient, [mailAddress.Host, 15, CancellationToken.None])); // 15 = MX Record
waitTask.Wait();
object response = waitTask.Result;
@@ -232,5 +242,10 @@ namespace System
/// <returns></returns>
public static StringBuilder AppendLine(this StringBuilder sb, string value, string newLine)
=> sb.Append(value).Append(newLine);
#if NET8_0_OR_GREATER
[GeneratedRegex("[^0-9a-fA-F]")]
private static partial Regex InvalidHexCharRegex();
#endif
}
}