diff --git a/src/Discord.Net.Net45/Discord.Net.csproj b/src/Discord.Net.Net45/Discord.Net.csproj index ae77302da..9447f3985 100644 --- a/src/Discord.Net.Net45/Discord.Net.csproj +++ b/src/Discord.Net.Net45/Discord.Net.csproj @@ -88,8 +88,8 @@ API\Enums\PermissionTarget.cs - - API\Enums\Regions.cs + + API\Enums\Region.cs API\Enums\StringEnum.cs diff --git a/src/Discord.Net/API/Enums/ChannelType.cs b/src/Discord.Net/API/Enums/ChannelType.cs index 066d12565..7d787ae67 100644 --- a/src/Discord.Net/API/Enums/ChannelType.cs +++ b/src/Discord.Net/API/Enums/ChannelType.cs @@ -24,5 +24,11 @@ return new ChannelType(value); } } + + public static implicit operator ChannelType(string value) => FromString(value); + public static bool operator ==(ChannelType a, ChannelType b) => a?._value == b?._value; + public static bool operator !=(ChannelType a, ChannelType b) => a?._value != b?._value; + public override bool Equals(object obj) => (obj as ChannelType)?._value == _value; + public override int GetHashCode() => _value.GetHashCode(); } } diff --git a/src/Discord.Net/API/Enums/PermissionTarget.cs b/src/Discord.Net/API/Enums/PermissionTarget.cs index 28427f247..d501dc72b 100644 --- a/src/Discord.Net/API/Enums/PermissionTarget.cs +++ b/src/Discord.Net/API/Enums/PermissionTarget.cs @@ -24,5 +24,11 @@ return new PermissionTarget(value); } } + + public static implicit operator PermissionTarget(string value) => FromString(value); + public static bool operator ==(PermissionTarget a, PermissionTarget b) => a?._value == b?._value; + public static bool operator !=(PermissionTarget a, PermissionTarget b) => a?._value != b?._value; + public override bool Equals(object obj) => (obj as PermissionTarget)?._value == _value; + public override int GetHashCode() => _value.GetHashCode(); } } diff --git a/src/Discord.Net/API/Enums/Regions.cs b/src/Discord.Net/API/Enums/Region.cs similarity index 71% rename from src/Discord.Net/API/Enums/Regions.cs rename to src/Discord.Net/API/Enums/Region.cs index 505778ad5..090f7cbda 100644 --- a/src/Discord.Net/API/Enums/Regions.cs +++ b/src/Discord.Net/API/Enums/Region.cs @@ -34,5 +34,11 @@ return new Region(value); } } + + public static implicit operator Region(string value) => FromString(value); + public static bool operator ==(Region a, Region b) => a?._value == b?._value; + public static bool operator !=(Region a, Region b) => a?._value != b?._value; + public override bool Equals(object obj) => (obj as Region)?._value == _value; + public override int GetHashCode() => _value.GetHashCode(); } } diff --git a/src/Discord.Net/API/Enums/StringEnum.cs b/src/Discord.Net/API/Enums/StringEnum.cs index 88a527dd2..98cf70e0e 100644 --- a/src/Discord.Net/API/Enums/StringEnum.cs +++ b/src/Discord.Net/API/Enums/StringEnum.cs @@ -2,7 +2,7 @@ { public abstract class StringEnum { - private string _value; + protected string _value; protected StringEnum(string value) { _value = value; @@ -10,43 +10,5 @@ public string Value => _value; public override string ToString() => _value; - - public override bool Equals(object obj) - { - var enum2 = obj as StringEnum; - if (enum2 == (StringEnum)null) - return false; - else - return _value == enum2._value; - } - public override int GetHashCode() - { - return _value.GetHashCode(); - } - - public static bool operator ==(StringEnum a, StringEnum b) - { - return a?._value == b?._value; - } - public static bool operator !=(StringEnum a, StringEnum b) - { - return a?._value != b?._value; - } - public static bool operator ==(StringEnum a, string b) - { - return a?._value == b; - } - public static bool operator !=(StringEnum a, string b) - { - return a?._value != b; - } - public static bool operator ==(string a, StringEnum b) - { - return a == b?._value; - } - public static bool operator !=(string a, StringEnum b) - { - return a != b?._value; - } } } diff --git a/src/Discord.Net/API/Enums/UserStatus.cs b/src/Discord.Net/API/Enums/UserStatus.cs index 493c9ec50..367a796a0 100644 --- a/src/Discord.Net/API/Enums/UserStatus.cs +++ b/src/Discord.Net/API/Enums/UserStatus.cs @@ -28,5 +28,11 @@ return new UserStatus(value); } } + + public static implicit operator UserStatus(string value) => FromString(value); + public static bool operator ==(UserStatus a, UserStatus b) => a?._value == b?._value; + public static bool operator !=(UserStatus a, UserStatus b) => a?._value != b?._value; + public override bool Equals(object obj) => (obj as UserStatus)?._value == _value; + public override int GetHashCode() => _value.GetHashCode(); } } diff --git a/src/Discord.Net/DiscordClient.Channels.cs b/src/Discord.Net/DiscordClient.Channels.cs index 2f3462d22..beef45a35 100644 --- a/src/Discord.Net/DiscordClient.Channels.cs +++ b/src/Discord.Net/DiscordClient.Channels.cs @@ -98,14 +98,14 @@ namespace Discord if (channel != null) query = query.Concat(new Channel[] { channel }); } - else if (name[0] == '#' && (type == (ChannelType)null || type == ChannelType.Text)) //If we somehow get text starting with # but isn't a mention + else if (name[0] == '#' && (type == null || type == ChannelType.Text)) //If we somehow get text starting with # but isn't a mention { string name2 = name.Substring(1); query = query.Concat(server.TextChannels.Where(x => string.Equals(x.Name, name2, StringComparison.OrdinalIgnoreCase))); } } - if (type != (string)null) + if (type != null) query = query.Where(x => x.Type == type); return query; } @@ -115,7 +115,7 @@ namespace Discord { if (server == null) throw new ArgumentNullException(nameof(server)); if (name == null) throw new ArgumentNullException(nameof(name)); - if (type == (string)null) throw new ArgumentNullException(nameof(type)); + if (type == null) throw new ArgumentNullException(nameof(type)); CheckReady(); var response = await _api.CreateChannel(server.Id, name, type.Value).ConfigureAwait(false); diff --git a/src/Discord.Net/DiscordClient.Servers.cs b/src/Discord.Net/DiscordClient.Servers.cs index ff66948f4..2066be5b7 100644 --- a/src/Discord.Net/DiscordClient.Servers.cs +++ b/src/Discord.Net/DiscordClient.Servers.cs @@ -84,7 +84,7 @@ namespace Discord public async Task CreateServer(string name, Region region) { if (name == null) throw new ArgumentNullException(nameof(name)); - if (region == (string)null) throw new ArgumentNullException(nameof(region)); + if (region == null) throw new ArgumentNullException(nameof(region)); CheckReady(); var response = await _api.CreateServer(name, region.Value).ConfigureAwait(false); diff --git a/src/Discord.Net/DiscordClient.Users.cs b/src/Discord.Net/DiscordClient.Users.cs index ed4e048e7..aa7e931b1 100644 --- a/src/Discord.Net/DiscordClient.Users.cs +++ b/src/Discord.Net/DiscordClient.Users.cs @@ -250,7 +250,7 @@ namespace Discord public Task SetStatus(UserStatus status) { - if (status == (string)null) throw new ArgumentNullException(nameof(status)); + if (status == null) throw new ArgumentNullException(nameof(status)); if (status != UserStatus.Online && status != UserStatus.Idle) throw new ArgumentException($"Invalid status, must be {UserStatus.Online} or {UserStatus.Idle}", nameof(status)); CheckReady();