Updated to C# 12
This commit is contained in:
@@ -1,7 +1,5 @@
|
||||
using System.Text;
|
||||
|
||||
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("UnitTests")]
|
||||
|
||||
namespace System
|
||||
{
|
||||
/// <summary>
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user