diff --git a/src/Discord.Net/DiscordClient.Channels.cs b/src/Discord.Net/DiscordClient.Channels.cs index 33152ed03..d23591b28 100644 --- a/src/Discord.Net/DiscordClient.Channels.cs +++ b/src/Discord.Net/DiscordClient.Channels.cs @@ -9,7 +9,7 @@ namespace Discord internal sealed class Channels : AsyncCollection { public Channels(DiscordClient client, object writerLock) - : base(client, writerLock, x => x.OnCached(), x => x.OnUncached()) { } + : base(client, writerLock) { } public Channel GetOrAdd(string id, string serverId, string recipientId = null) => GetOrAdd(id, () => new Channel(_client, id, serverId, recipientId)); diff --git a/src/Discord.Net/DiscordClient.Members.cs b/src/Discord.Net/DiscordClient.Members.cs index d30b50679..b784e6616 100644 --- a/src/Discord.Net/DiscordClient.Members.cs +++ b/src/Discord.Net/DiscordClient.Members.cs @@ -8,7 +8,7 @@ namespace Discord internal sealed class Users : AsyncCollection { public Users(DiscordClient client, object writerLock) - : base(client, writerLock, x => x.OnCached(), x => x.OnUncached()) { } + : base(client, writerLock) { } private string GetKey(string userId, string serverId) => User.GetId(userId, serverId); diff --git a/src/Discord.Net/DiscordClient.Messages.cs b/src/Discord.Net/DiscordClient.Messages.cs index 70a57bebd..e7f66ec6d 100644 --- a/src/Discord.Net/DiscordClient.Messages.cs +++ b/src/Discord.Net/DiscordClient.Messages.cs @@ -13,7 +13,7 @@ namespace Discord private bool _isEnabled; public Messages(DiscordClient client, object writerLock, bool isEnabled) - : base(client, writerLock, x => x.OnCached(), x => x.OnUncached()) + : base(client, writerLock) { _isEnabled = isEnabled; } diff --git a/src/Discord.Net/DiscordClient.Roles.cs b/src/Discord.Net/DiscordClient.Roles.cs index f98005cde..37a45b982 100644 --- a/src/Discord.Net/DiscordClient.Roles.cs +++ b/src/Discord.Net/DiscordClient.Roles.cs @@ -10,7 +10,7 @@ namespace Discord public Role VirtualEveryone { get; private set; } public Roles(DiscordClient client, object writerLock) - : base(client, writerLock, x => x.OnCached(), x => x.OnUncached()) + : base(client, writerLock) { VirtualEveryone = new Role(client, "Private", null); } diff --git a/src/Discord.Net/DiscordClient.Servers.cs b/src/Discord.Net/DiscordClient.Servers.cs index fbe417227..b454bdefc 100644 --- a/src/Discord.Net/DiscordClient.Servers.cs +++ b/src/Discord.Net/DiscordClient.Servers.cs @@ -9,7 +9,7 @@ namespace Discord internal sealed class Servers : AsyncCollection { public Servers(DiscordClient client, object writerLock) - : base(client, writerLock, x => x.OnCached(), x => x.OnUncached()) { } + : base(client, writerLock) { } public Server GetOrAdd(string id) => GetOrAdd(id, () => new Server(_client, id)); diff --git a/src/Discord.Net/DiscordClient.Users.cs b/src/Discord.Net/DiscordClient.Users.cs index 7202da0e8..9ad20efa1 100644 --- a/src/Discord.Net/DiscordClient.Users.cs +++ b/src/Discord.Net/DiscordClient.Users.cs @@ -9,7 +9,7 @@ namespace Discord internal sealed class GlobalUsers : AsyncCollection { public GlobalUsers(DiscordClient client, object writerLock) - : base(client, writerLock, x => x.OnCached(), x => x.OnUncached()) { } + : base(client, writerLock) { } public GlobalUser GetOrAdd(string id) => GetOrAdd(id, () => new GlobalUser(_client, id)); } diff --git a/src/Discord.Net/Helpers/AsyncCollection.cs b/src/Discord.Net/Helpers/AsyncCollection.cs index e76cff6ac..ee47ce375 100644 --- a/src/Discord.Net/Helpers/AsyncCollection.cs +++ b/src/Discord.Net/Helpers/AsyncCollection.cs @@ -52,15 +52,12 @@ namespace Discord protected readonly DiscordClient _client; protected readonly ConcurrentDictionary _dictionary; - private readonly Action _onCache, _onUncache; - protected AsyncCollection(DiscordClient client, object writerLock, Action onCache, Action onUncache) + protected AsyncCollection(DiscordClient client, object writerLock) { _client = client; _writerLock = writerLock; _dictionary = new ConcurrentDictionary(); - _onCache = onCache; - _onUncache = onUncache; } public TValue this[string key] @@ -88,7 +85,7 @@ namespace Discord result = _dictionary.GetOrAdd(key, newItem); if (result == newItem) { - _onCache(result); + result.Cache(); RaiseItemCreated(result); } } @@ -103,7 +100,7 @@ namespace Discord TValue result; if (_dictionary.TryRemove(key, out result)) { - _onUncache(result); //TODO: If this object is accessed before OnRemoved finished firing, properties such as Server.Channels will have null elements + result.Uncache(); //TODO: If this object is accessed before OnRemoved finished firing, properties such as Server.Channels will have null elements return result; } }