我正在创建几个地图来为我的应用程序缓存一些信息。当一些事件被触发时,我想清除这些缓存。我有一个应该清除的所有地图名称的列表,但我找不到一种动态获取这些地图的方法来清除它们。基本上我有:
var mapsNames = ["map-1", "map-2", "map-3"];我想要一种简单的方式来做这些事情:
var client = HazelcastClient.NewHazelcastClient();
foreach (var name in mapsNames)
{
var map = client.GetMap(name);
map.Clear();
}在README.md中,我们有一些这样的示例:
var client = HazelcastClient.NewHazelcastClient();
var personnelMap = client.GetMap("personnelMap");
personnelMap.Put("Alice", "IT");
personnelMap.Put("Bob", "IT");
personnelMap.Put("Clark", "IT");
Console.WriteLine("Added IT personnel. Logging all known personnel");
foreach(var entry in personnelMap.entrySet())
{
Console.WriteLine("{0} is in {1} department", entry.Key, entry.Value );
}
client.Shutdown();这表明我们应该有一个非泛型的方法GetMap,但是我找不到它。唯一可用的是GetMap<TKey, TValue>。文档是不是错了?有没有一种方法可以在不使用任何丑陋的反射的情况下按名称获取Map?
提前谢谢你,
发布于 2019-09-11 19:22:12
你有没有试过(ICollection<IDistributedObject> GetDistributedObjects()) https://github.com/hazelcast/hazelcast-csharp-client/blob/v3.12.1/Hazelcast.Net/Hazelcast.Client/HazelcastClient.cs#L230?
您可以遍历所有现有的地图,并且可以使用https://github.com/hazelcast/hazelcast-csharp-client/blob/v3.12.1/Hazelcast.Net/Hazelcast.Core/IDistributedObject.cs#L53检查分布式对象是否属于地图服务类型。
https://stackoverflow.com/questions/57861896
复制相似问题