Browse Source

Improved equality checks for cache objects

tags/docs-0.9
RogueException 9 years ago
parent
commit
1f07a73ec0
9 changed files with 26 additions and 0 deletions
  1. +2
    -0
      src/Discord.Net/Models/Channel.cs
  2. +4
    -0
      src/Discord.Net/Models/Color.cs
  3. +2
    -0
      src/Discord.Net/Models/GlobalUser.cs
  4. +2
    -0
      src/Discord.Net/Models/Invite.cs
  5. +2
    -0
      src/Discord.Net/Models/Message.cs
  6. +8
    -0
      src/Discord.Net/Models/Permissions.cs
  7. +2
    -0
      src/Discord.Net/Models/Role.cs
  8. +2
    -0
      src/Discord.Net/Models/Server.cs
  9. +2
    -0
      src/Discord.Net/Models/User.cs

+ 2
- 0
src/Discord.Net/Models/Channel.cs View File

@@ -207,6 +207,8 @@ namespace Discord
user.UpdateChannelPermissions(this);
}

public override bool Equals(object obj) => obj is Channel && (obj as Channel).Id == Id;
public override int GetHashCode() => Id.GetHashCode();
public override string ToString() => Name ?? Id;
}
}

+ 4
- 0
src/Discord.Net/Models/Color.cs View File

@@ -77,5 +77,9 @@ namespace Discord
uint mask = (uint)~(0xFF << bit);
_rawValue = (_rawValue & mask) | ((uint)value << bit);
}

public override bool Equals(object obj) => obj is Color && (obj as Color)._rawValue == _rawValue;
public override int GetHashCode() => _rawValue.GetHashCode();
public override string ToString() => '#' + _rawValue.ToString("X");
}
}

+ 2
- 0
src/Discord.Net/Models/GlobalUser.cs View File

@@ -69,6 +69,8 @@ namespace Discord
_client.GlobalUsers.TryRemove(Id);
}

public override bool Equals(object obj) => obj is GlobalUser && (obj as GlobalUser).Id == Id;
public override int GetHashCode() => Id.GetHashCode();
public override string ToString() => Id;
}
}

+ 2
- 0
src/Discord.Net/Models/Invite.cs View File

@@ -112,6 +112,8 @@ namespace Discord
CreatedAt = model.CreatedAt.Value;
}

public override bool Equals(object obj) => obj is Invite && (obj as Invite).Id == Id;
public override int GetHashCode() => Id.GetHashCode();
public override string ToString() => XkcdCode ?? Id;
}
}

+ 2
- 0
src/Discord.Net/Models/Message.cs View File

@@ -235,6 +235,8 @@ namespace Discord
}
}

public override bool Equals(object obj) => obj is Message && (obj as Message).Id == Id;
public override int GetHashCode() => Id.GetHashCode();
public override string ToString() => $"{User}: {RawText}";
}
}

+ 8
- 0
src/Discord.Net/Models/Permissions.cs View File

@@ -137,6 +137,9 @@ namespace Discord
if (_isLocked)
throw new InvalidOperationException("Unable to edit cached permissions directly, use Copy() to make an editable copy.");
}

public override bool Equals(object obj) => obj is Permissions && (obj as Permissions)._rawValue == _rawValue;
public override int GetHashCode() => _rawValue.GetHashCode();
}

public sealed class DualChannelPermissions
@@ -214,5 +217,10 @@ namespace Discord
Deny.SetBit(pos, false);
}
}

public override bool Equals(object obj) => obj is DualChannelPermissions &&
(obj as DualChannelPermissions).Allow.Equals(Allow) &&
(obj as DualChannelPermissions).Deny.Equals(Deny);
public override int GetHashCode() => unchecked(Allow.GetHashCode() + Deny.GetHashCode());
}
}

+ 2
- 0
src/Discord.Net/Models/Role.cs View File

@@ -70,6 +70,8 @@ namespace Discord
member.UpdateServerPermissions();
}

public override bool Equals(object obj) => obj is Role && (obj as Role).Id == Id;
public override int GetHashCode() => Id.GetHashCode();
public override string ToString() => Name ?? Id;
}
}

+ 2
- 0
src/Discord.Net/Models/Server.cs View File

@@ -252,6 +252,8 @@ namespace Discord
}
}

public override bool Equals(object obj) => obj is Server && (obj as Server).Id == Id;
public override int GetHashCode() => Id.GetHashCode();
public override string ToString() => Name ?? Id;
}
}

+ 2
- 0
src/Discord.Net/Models/User.cs View File

@@ -370,6 +370,8 @@ namespace Discord
return _roles.ContainsKey(role.Id);
}

public override bool Equals(object obj) => obj is User && (obj as User).Id == Id;
public override int GetHashCode() => Id.GetHashCode();
public override string ToString() => Name ?? Id;
}
}

Loading…
Cancel
Save