netstandard and revert target type new

This commit is contained in:
Ben Harris 2024-04-19 00:24:48 -04:00
parent 5c2b0faf52
commit 53add8700f
26 changed files with 97 additions and 122 deletions

View File

@ -1,7 +1,5 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=3892ce1c_002Daad5_002D4870_002D98ea_002D199acb6b67c3/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" IsActive="True" Name="All tests from Solution #2" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;&#xD;
&lt;Solution /&gt;&#xD;
&lt;/SessionState&gt;</s:String>
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=64875d9c_002Daf58_002D4d04_002D996b_002Ddf4baee8e592/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" Name="All tests from Solution" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;&#xD;
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=64875d9c_002Daf58_002D4d04_002D996b_002Ddf4baee8e592/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" IsActive="True" Name="All tests from Solution" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;&#xD;
&lt;Solution /&gt;&#xD;
&lt;/SessionState&gt;</s:String></wpf:ResourceDictionary>

View File

@ -12,7 +12,7 @@ namespace ChatSharp
{
internal CapabilityPool()
{
Capabilities = new();
Capabilities = new List<IrcCapability>();
}
private List<IrcCapability> Capabilities { get; }
@ -67,7 +67,7 @@ namespace ChatSharp
if (Capabilities.Any(cap => cap.Name == name))
return;
Capabilities.Add(new(name));
Capabilities.Add(new IrcCapability(name));
}
internal void AddRange(IEnumerable<string> range)

View File

@ -12,7 +12,7 @@ namespace ChatSharp
{
internal ChannelCollection()
{
Channels = new();
Channels = new List<IrcChannel>();
}
internal ChannelCollection(IrcClient client) : this()

View File

@ -1,17 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<RepositoryUrl>https://tildegit.org/ben/chatsharp</RepositoryUrl>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://tildegit.org/ben/chatsharp</PackageProjectUrl>
<Description>c# irc library</Description>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>netstandard2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<None Include="..\README.md">
<Pack>True</Pack>
<PackagePath></PackagePath>
</None>
<None Include="..\README.md" Pack="true" PackagePath="\"/>
</ItemGroup>
</Project>

View File

@ -37,11 +37,11 @@ namespace ChatSharp.Events
{
const string nickCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
_random ??= new();
_random ??= new Random();
var nick = new char[8];
for (var i = 0; i < nick.Length; i++)
nick[i] = nickCharacters[_random.Next(nickCharacters.Length)];
return new(nick);
return new string(nick);
}
}
}

View File

@ -12,7 +12,7 @@ namespace ChatSharp.Events
internal PrivateMessageEventArgs(IrcClient client, IrcMessage ircMessage, ServerInfo serverInfo)
{
IrcMessage = ircMessage;
PrivateMessage = new(client, IrcMessage, serverInfo);
PrivateMessage = new PrivateMessage(client, IrcMessage, serverInfo);
}
/// <summary>

View File

@ -2,6 +2,7 @@ using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using ChatSharp.Events;
namespace ChatSharp.Handlers
{
@ -25,7 +26,7 @@ namespace ChatSharp.Handlers
user.Account = whoQuery[0].User.Account;
});
client.OnUserJoinedChannel(new(channel, user));
client.OnUserJoinedChannel(new ChannelUserEventArgs(channel, user));
}
}
@ -34,7 +35,7 @@ namespace ChatSharp.Handlers
var channel = client.Channels.GetOrAdd(message.Parameters[1]);
var old = channel._Topic;
channel._Topic = message.Parameters[2];
client.OnChannelTopicReceived(new(channel, old, channel._Topic));
client.OnChannelTopicReceived(new ChannelTopicEventArgs(channel, old, channel._Topic));
}
public static void HandleGetEmptyTopic(IrcClient client, IrcMessage message)
@ -42,7 +43,7 @@ namespace ChatSharp.Handlers
var channel = client.Channels.GetOrAdd(message.Parameters[1]);
var old = channel._Topic;
channel._Topic = message.Parameters[2];
client.OnChannelTopicReceived(new(channel, old, channel._Topic));
client.OnChannelTopicReceived(new ChannelTopicEventArgs(channel, old, channel._Topic));
}
public static void HandlePart(IrcClient client, IrcMessage message)
@ -58,7 +59,7 @@ namespace ChatSharp.Handlers
if (user.ChannelModes.ContainsKey(channel))
user.ChannelModes.Remove(channel);
client.OnUserPartedChannel(new(channel, user));
client.OnUserPartedChannel(new ChannelUserEventArgs(channel, user));
}
public static void HandleUserListPart(IrcClient client, IrcMessage message)
@ -127,7 +128,7 @@ namespace ChatSharp.Handlers
public static void HandleUserListEnd(IrcClient client, IrcMessage message)
{
var channel = client.Channels[message.Parameters[1]];
client.OnChannelListReceived(new(channel));
client.OnChannelListReceived(new ChannelEventArgs(channel));
if (client.Settings.ModeOnJoin)
try
{
@ -164,7 +165,7 @@ namespace ChatSharp.Handlers
var kicked = channel.Users[message.Parameters[1]];
if (kicked.Channels.Contains(channel))
kicked.Channels.Remove(channel);
client.OnUserKicked(new(channel, new(message.Prefix),
client.OnUserKicked(new KickEventArgs(channel, new IrcUser(message.Prefix),
kicked, message.Parameters[2]));
}
}

View File

@ -1,3 +1,5 @@
using ChatSharp.Events;
namespace ChatSharp.Handlers
{
/// <summary>
@ -10,7 +12,7 @@ namespace ChatSharp.Handlers
/// </summary>
public static void HandleError(IrcClient client, IrcMessage message)
{
client.OnErrorReply(new(message));
client.OnErrorReply(new ErrorReplyEventArgs(message));
}
}
}

View File

@ -8,7 +8,7 @@ namespace ChatSharp.Handlers
var parameters = parameterString[parameterString.IndexOf(' ')..].Split(' ');
var request = client.RequestManager.PeekOperation("GETMODE b " + parameters[1]);
var list = (MaskCollection)request.State;
list.Add(new(parameters[2], client.Users.GetOrAdd(parameters[3]),
list.Add(new Mask(parameters[2], client.Users.GetOrAdd(parameters[3]),
IrcClient.DateTimeFromIrcTime(int.Parse(parameters[4]))));
}
@ -24,7 +24,7 @@ namespace ChatSharp.Handlers
var parameters = parameterString[(parameterString.IndexOf(' ') + 1)..].Split(' ');
var request = client.RequestManager.PeekOperation("GETMODE e " + parameters[1]);
var list = (MaskCollection)request.State;
list.Add(new(parameters[2], client.Users.GetOrAdd(parameters[3]),
list.Add(new Mask(parameters[2], client.Users.GetOrAdd(parameters[3]),
IrcClient.DateTimeFromIrcTime(int.Parse(parameters[4]))));
}
@ -40,7 +40,7 @@ namespace ChatSharp.Handlers
var parameters = parameterString[(parameterString.IndexOf(' ') + 1)..].Split(' ');
var request = client.RequestManager.PeekOperation("GETMODE I " + parameters[1]);
var list = (MaskCollection)request.State;
list.Add(new(parameters[2], client.Users.GetOrAdd(parameters[3]),
list.Add(new Mask(parameters[2], client.Users.GetOrAdd(parameters[3]),
IrcClient.DateTimeFromIrcTime(int.Parse(parameters[4]))));
}
@ -56,7 +56,7 @@ namespace ChatSharp.Handlers
var parameters = parameterString[(parameterString.IndexOf(' ') + 1)..].Split(' ');
var request = client.RequestManager.PeekOperation("GETMODE q " + parameters[1]);
var list = (MaskCollection)request.State;
list.Add(new(parameters[2], client.Users.GetOrAdd(parameters[3]),
list.Add(new Mask(parameters[2], client.Users.GetOrAdd(parameters[3]),
IrcClient.DateTimeFromIrcTime(int.Parse(parameters[4]))));
}

View File

@ -1,4 +1,5 @@
using System;
using ChatSharp.Events;
namespace ChatSharp.Handlers
{
@ -17,21 +18,21 @@ namespace ChatSharp.Handlers
throw new IrcProtocolException("372 MOTD message is incorrectly formatted.");
var part = message.Parameters[1][2..];
MOTD += part + Environment.NewLine;
client.OnMOTDPartReceived(new(part));
client.OnMOTDPartReceived(new ServerMOTDEventArgs(part));
}
public static void HandleEndOfMOTD(IrcClient client, IrcMessage message)
{
client.OnMOTDReceived(new(MOTD));
client.OnConnectionComplete(new());
client.OnMOTDReceived(new ServerMOTDEventArgs(MOTD));
client.OnConnectionComplete(EventArgs.Empty);
// Verify our identity
VerifyOurIdentity(client);
}
public static void HandleMOTDNotFound(IrcClient client, IrcMessage message)
{
client.OnMOTDReceived(new(MOTD));
client.OnConnectionComplete(new());
client.OnMOTDReceived(new ServerMOTDEventArgs(MOTD));
client.OnConnectionComplete(EventArgs.Empty);
VerifyOurIdentity(client);
}

View File

@ -1,3 +1,4 @@
using System.Collections.Generic;
using System.Linq;
using ChatSharp.Events;
@ -95,7 +96,7 @@ namespace ChatSharp.Handlers
var oldNick = user.Nick;
user.Nick = message.Parameters[0];
client.OnNickChanged(new()
client.OnNickChanged(new NickChangedEventArgs
{
User = user,
OldNick = oldNick,
@ -109,7 +110,7 @@ namespace ChatSharp.Handlers
if (client.User.Nick != user.Nick)
{
client.Users.Remove(user);
client.OnUserQuit(new(user));
client.OnUserQuit(new UserEventArgs(user));
}
}
@ -121,7 +122,7 @@ namespace ChatSharp.Handlers
public static void HandleNotice(IrcClient client, IrcMessage message)
{
client.OnNoticeReceived(new(message));
client.OnNoticeReceived(new IrcNoticeEventArgs(message));
}
public static void HandlePrivmsg(IrcClient client, IrcMessage message)
@ -186,22 +187,22 @@ namespace ChatSharp.Handlers
// TODO: Support the ones here that aren't done properly
if (client.ServerInfo.SupportedChannelModes.ParameterizedSettings.Contains(c))
{
client.OnModeChanged(new(channel.Name, new(message.Prefix),
client.OnModeChanged(new ModeChangeEventArgs(channel.Name, new IrcUser(message.Prefix),
(add ? "+" : "-") + c + " " + message.Parameters[i++]));
}
else if (client.ServerInfo.SupportedChannelModes.ChannelLists.Contains(c))
{
client.OnModeChanged(new(channel.Name, new(message.Prefix),
client.OnModeChanged(new ModeChangeEventArgs(channel.Name, new IrcUser(message.Prefix),
(add ? "+" : "-") + c + " " + message.Parameters[i++]));
}
else if (client.ServerInfo.SupportedChannelModes.ChannelUserModes.Contains(c))
{
if (!channel.UsersByMode.ContainsKey(c))
channel.UsersByMode.Add(c,
new(channel.Users.Where(u =>
new UserPoolView(channel.Users.Where(u =>
{
if (!u.ChannelModes.ContainsKey(channel))
u.ChannelModes.Add(channel, new());
u.ChannelModes.Add(channel, new List<char?>());
return u.ChannelModes[channel].Contains(c);
})));
var user = new IrcUser(message.Parameters[i]);
@ -217,7 +218,7 @@ namespace ChatSharp.Handlers
user.ChannelModes[channel] = null;
}
client.OnModeChanged(new(channel.Name, new(message.Prefix),
client.OnModeChanged(new ModeChangeEventArgs(channel.Name, new IrcUser(message.Prefix),
(add ? "+" : "-") + c + " " + message.Parameters[i++]));
}
@ -233,7 +234,7 @@ namespace ChatSharp.Handlers
channel.Mode = channel.Mode.Replace(c.ToString(), string.Empty);
}
client.OnModeChanged(new(channel.Name, new(message.Prefix),
client.OnModeChanged(new ModeChangeEventArgs(channel.Name, new IrcUser(message.Prefix),
(add ? "+" : "-") + c));
}
}

View File

@ -1,3 +1,5 @@
using ChatSharp.Events;
namespace ChatSharp.Handlers
{
internal static class ServerHandlers
@ -5,7 +7,7 @@ namespace ChatSharp.Handlers
public static void HandleISupport(IrcClient client, IrcMessage message)
{
if (client.ServerInfo == null)
client.ServerInfo = new();
client.ServerInfo = new ServerInfo();
foreach (var item in message.Parameters)
{
string key, value;
@ -57,7 +59,7 @@ namespace ChatSharp.Handlers
var limitedModes = limits[i].Remove(limits[i].IndexOf(':'));
var limit = int.Parse(limits[i][(limits[i].IndexOf(':') + 1)..]);
foreach (var mode in limitedModes)
client.ServerInfo.ModeListLimits[i] = new(mode, limit);
client.ServerInfo.ModeListLimits[i] = new ServerInfo.ModeListLimit(mode, limit);
}
break;
@ -92,7 +94,7 @@ namespace ChatSharp.Handlers
}
}
client.OnServerInfoReceived(new(client.ServerInfo));
client.OnServerInfoReceived(new SupportsEventArgs(client.ServerInfo));
}
public static void HandleMyInfo(IrcClient client, IrcMessage message)
@ -100,7 +102,7 @@ namespace ChatSharp.Handlers
// 004 sendak.freenode.net ircd-seven-1.1.3 DOQRSZaghilopswz CFILMPQbcefgijklmnopqrstvz bkloveqjfI
// TODO: Figure out how to properly handle this message
if (client.ServerInfo == null)
client.ServerInfo = new();
client.ServerInfo = new ServerInfo();
if (message.Parameters.Length >= 5)
foreach (var c in message.Parameters[4])
if (!client.ServerInfo.SupportedChannelModes.ChannelUserModes.Contains(c))

View File

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using ChatSharp.Events;
namespace ChatSharp.Handlers
{
@ -68,7 +69,7 @@ namespace ChatSharp.Handlers
if (!client.Users.Contains(whois.User.Nick))
client.Users.Add(whois.User);
request.Callback?.Invoke(request);
client.OnWhoIsReceived(new(whois));
client.OnWhoIsReceived(new WhoIsReceivedEventArgs(whois));
}
public static void HandleWho(IrcClient client, IrcMessage message)
@ -81,7 +82,7 @@ namespace ChatSharp.Handlers
var who = new ExtendedWho
{
Channel = message.Parameters[1],
User = new()
User = new IrcUser
{
User = message.Parameters[2],
Nick = message.Parameters[5]
@ -236,7 +237,7 @@ namespace ChatSharp.Handlers
client.Users.Add(whox.User);
request.Callback?.Invoke(request);
client.OnWhoxReceived(new(whoxList.ToArray()));
client.OnWhoxReceived(new WhoxReceivedEventArgs(whoxList.ToArray()));
}
else
{
@ -250,7 +251,7 @@ namespace ChatSharp.Handlers
client.Users.Add(who.User);
request.Callback?.Invoke(request);
client.OnWhoxReceived(new(whoList.ToArray()));
client.OnWhoxReceived(new WhoxReceivedEventArgs(whoList.ToArray()));
}
}

View File

@ -14,7 +14,7 @@ namespace ChatSharp
{
Client = client;
Name = name;
Users = new(client.Users.Where(u => u.Channels.Contains(this)));
Users = new UserPoolView(client.Users.Where(u => u.Channels.Contains(this)));
}
private IrcClient Client { get; }

View File

@ -163,7 +163,7 @@ namespace ChatSharp
public void WhoIs(string nick, Action<WhoIs> callback)
{
var whois = new WhoIs();
RequestManager.QueueOperation("WHOIS " + nick, new(whois, ro => { callback?.Invoke((WhoIs)ro.State); }));
RequestManager.QueueOperation("WHOIS " + nick, new RequestOperation(whois, ro => { callback?.Invoke((WhoIs)ro.State); }));
SendRawMessage("WHOIS {0}", nick);
}
@ -190,7 +190,7 @@ namespace ChatSharp
var queryKey = string.Format("WHO {0} {1} {2:D}", target, queryType, _fields);
RequestManager.QueueOperation(queryKey,
new(whox, ro => { callback?.Invoke((List<ExtendedWho>)ro.State); }));
new RequestOperation(whox, ro => { callback?.Invoke((List<ExtendedWho>)ro.State); }));
SendRawMessage(whoQuery);
}
else
@ -200,7 +200,7 @@ namespace ChatSharp
var whoQuery = string.Format("WHO {0}", target);
RequestManager.QueueOperation(whoQuery,
new(whox, ro => { callback?.Invoke((List<ExtendedWho>)ro.State); }));
new RequestOperation(whox, ro => { callback?.Invoke((List<ExtendedWho>)ro.State); }));
SendRawMessage(whoQuery);
}
}
@ -218,7 +218,7 @@ namespace ChatSharp
/// </summary>
public void GetMode(string channel, Action<IrcChannel> callback)
{
RequestManager.QueueOperation("MODE " + channel, new(channel, ro =>
RequestManager.QueueOperation("MODE " + channel, new RequestOperation(channel, ro =>
{
var c = Channels[(string)ro.State];
callback?.Invoke(c);
@ -240,7 +240,7 @@ namespace ChatSharp
/// </summary>
public void GetModeList(string channel, char mode, Action<MaskCollection> callback)
{
RequestManager.QueueOperation("GETMODE " + mode + " " + channel, new(new MaskCollection(), ro =>
RequestManager.QueueOperation("GETMODE " + mode + " " + channel, new RequestOperation(new MaskCollection(), ro =>
{
var c = (MaskCollection)ro.State;
callback?.Invoke(c);

View File

@ -35,18 +35,18 @@ namespace ChatSharp
User = user ?? throw new ArgumentNullException(nameof(user));
ServerAddress = serverAddress ?? throw new ArgumentNullException(nameof(serverAddress));
Encoding = Encoding.UTF8;
Settings = new();
Handlers = new();
Settings = new ClientSettings();
Handlers = new Dictionary<string, MessageHandler>();
MessageHandlers.RegisterDefaultHandlers(this);
RequestManager = new();
RequestManager = new RequestManager();
UseSSL = useSSL;
WriteQueue = new();
ServerInfo = new();
WriteQueue = new ConcurrentQueue<string>();
ServerInfo = new ServerInfo();
PrivmsgPrefix = "";
Channels = User.Channels = new(this);
Channels = User.Channels = new ChannelCollection(this);
// Add self to user pool
Users = new() { User };
Capabilities = new();
Users = new UserPool { User };
Capabilities = new CapabilityPool();
// List of supported capabilities
Capabilities.AddRange(new[]
@ -58,7 +58,7 @@ namespace ChatSharp
IsNegotiatingCapabilities = false;
IsAuthenticatingSasl = false;
RandomNumber = new();
RandomNumber = new Random();
}
private Dictionary<string, MessageHandler> Handlers { get; }
@ -199,17 +199,17 @@ namespace ChatSharp
{
if (Socket != null && Socket.Connected)
throw new InvalidOperationException("Socket is already connected to server.");
Socket = new(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
ReadBuffer = new byte[ReadBufferLength];
ReadBufferIndex = 0;
PingTimer = new(30000);
PingTimer.Elapsed += (_, _) =>
PingTimer = new Timer(30000);
PingTimer.Elapsed += (x, y) =>
{
if (!string.IsNullOrEmpty(ServerNameFromPing))
SendRawMessage("PING :{0}", ServerNameFromPing);
};
var checkQueue = new Timer(1000);
checkQueue.Elapsed += (_, _) =>
checkQueue.Elapsed += (x, y) =>
{
if (!WriteQueue.IsEmpty)
{
@ -260,7 +260,7 @@ namespace ChatSharp
if (UseSSL)
{
if (IgnoreInvalidSSL)
NetworkStream = new SslStream(NetworkStream, false, (_, _, _, _) => true);
NetworkStream = new SslStream(NetworkStream, false, (a, b, c, d) => true);
else
NetworkStream = new SslStream(NetworkStream);
((SslStream)NetworkStream).AuthenticateAsClient(ServerHostname);
@ -279,11 +279,11 @@ namespace ChatSharp
}
catch (SocketException e)
{
OnNetworkError(new(e.SocketErrorCode));
OnNetworkError(new SocketErrorEventArgs(e.SocketErrorCode));
}
catch (Exception e)
{
OnError(new(e));
OnError(new ErrorEventArgs(e));
}
}
@ -291,7 +291,7 @@ namespace ChatSharp
{
if (NetworkStream == null)
{
OnNetworkError(new(SocketError.NotConnected));
OnNetworkError(new SocketErrorEventArgs(SocketError.NotConnected));
return;
}
@ -303,7 +303,7 @@ namespace ChatSharp
catch (IOException e)
{
if (e.InnerException is SocketException socketException)
OnNetworkError(new(socketException.SocketErrorCode));
OnNetworkError(new SocketErrorEventArgs(socketException.SocketErrorCode));
else
throw;
return;
@ -332,7 +332,7 @@ namespace ChatSharp
private void HandleMessage(string rawMessage)
{
OnRawMessageReceived(new(rawMessage, false));
OnRawMessageReceived(new RawMessageEventArgs(rawMessage, false));
var message = new IrcMessage(rawMessage);
if (Handlers.ContainsKey(message.Command.ToUpper()))
{
@ -347,7 +347,7 @@ namespace ChatSharp
{
if (NetworkStream == null)
{
OnNetworkError(new(SocketError.NotConnected));
OnNetworkError(new SocketErrorEventArgs(SocketError.NotConnected));
return;
}
@ -377,7 +377,7 @@ namespace ChatSharp
{
if (NetworkStream == null)
{
OnNetworkError(new(SocketError.NotConnected));
OnNetworkError(new SocketErrorEventArgs(SocketError.NotConnected));
IsWriting = false;
return;
}
@ -389,7 +389,7 @@ namespace ChatSharp
catch (IOException e)
{
if (e.InnerException is SocketException socketException)
OnNetworkError(new(socketException.SocketErrorCode));
OnNetworkError(new SocketErrorEventArgs(socketException.SocketErrorCode));
else
throw;
return;
@ -399,7 +399,7 @@ namespace ChatSharp
IsWriting = false;
}
OnRawMessageSent(new((string)result.AsyncState, true));
OnRawMessageSent(new RawMessageEventArgs((string)result.AsyncState, true));
string nextMessage;
if (!WriteQueue.IsEmpty)

View File

@ -29,13 +29,13 @@ namespace ChatSharp
{
var replacedTag = rawTag.Replace(@"\:", ";");
// The spec declares `@a=` as a tag with an empty value, while `@b;` as a tag with a null value
KeyValuePair<string, string> tag = new(replacedTag, null);
KeyValuePair<string, string> tag = new KeyValuePair<string, string>(replacedTag, null);
if (replacedTag.Contains("="))
{
var key = replacedTag.Substring(0, replacedTag.IndexOf("=", StringComparison.Ordinal));
var value = replacedTag[(replacedTag.IndexOf("=", StringComparison.Ordinal) + 1)..];
tag = new(key, value);
tag = new KeyValuePair<string, string>(key, value);
}
tags.Add(tag);
@ -91,13 +91,13 @@ namespace ChatSharp
if (Tags.Any(tag => tag.Key == "t"))
{
var tag = Tags.SingleOrDefault(x => x.Key == "t");
Timestamp = new(tag.Value, true);
Timestamp = new Timestamp(tag.Value, true);
}
// server-time tag
else if (Tags.Any(tag => tag.Key == "time"))
{
var tag = Tags.SingleOrDefault(x => x.Key == "time");
Timestamp = new(tag.Value);
Timestamp = new Timestamp(tag.Value);
}
}

View File

@ -10,8 +10,8 @@ namespace ChatSharp
{
internal IrcUser()
{
Channels = new();
ChannelModes = new();
Channels = new ChannelCollection();
ChannelModes = new Dictionary<IrcChannel, List<char?>>();
Account = "*";
}

View File

@ -11,7 +11,7 @@ namespace ChatSharp
{
internal MaskCollection()
{
Masks = new();
Masks = new List<Mask>();
}
private List<Mask> Masks { get; }

View File

@ -8,7 +8,7 @@ namespace ChatSharp
{
public RequestManager()
{
PendingOperations = new();
PendingOperations = new Dictionary<string, RequestOperation>();
}
internal Dictionary<string, RequestOperation> PendingOperations { get; }

View File

@ -11,7 +11,7 @@ namespace ChatSharp
{
// Guess for some defaults
Prefixes = new[] { "ovhaq", "@+%&~" };
SupportedChannelModes = new();
SupportedChannelModes = new ChannelModes();
IsGuess = true;
ExtendedWho = false;
}
@ -115,8 +115,8 @@ namespace ChatSharp
public List<char?> GetModesForNick(string nick)
{
var supportedPrefixes = Prefixes[1];
List<char?> modeList = new();
List<char> nickPrefixes = new();
List<char?> modeList = new List<char?>();
List<char> nickPrefixes = new List<char>();
foreach (var prefix in supportedPrefixes)
if (nick.Contains(prefix))

View File

@ -13,7 +13,7 @@ namespace ChatSharp
{
internal UserPool()
{
Users = new();
Users = new List<IrcUser>();
}
private List<IrcUser> Users { get; }

View File

@ -10,7 +10,7 @@ namespace ChatSharp
{
internal WhoIs()
{
User = new();
User = new IrcUser();
SecondsIdle = -1;
Channels = Array.Empty<string>();
}

View File

@ -12,7 +12,7 @@ namespace ChatSharp
{
QueryType = -1;
Channel = "*";
User = new();
User = new IrcUser();
IP = string.Empty;
Server = string.Empty;
Flags = string.Empty;

View File

@ -1,17 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="MSTest.Sdk/3.3.1">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\ChatSharp\ChatSharp.csproj"/>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0"/>
<PackageReference Include="MSTest.TestAdapter" Version="2.2.9"/>
<PackageReference Include="Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers" Version="0.3.310801">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="MSTest.TestFramework" Version="2.2.9"/>
</ItemGroup>
</Project>

View File

@ -1,19 +0,0 @@
using System.Reflection;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("ChatSharpTests")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ChatSharpTests")]
[assembly: AssemblyCopyright("Copyright © 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("24d593ec-ca81-41dc-9fe7-a434ddde229d")]
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]