我想调用IDatabase.SortedSetAsync
(StackExchange.Redis)。该方法的签名如下:
Task<bool> SortedSetRemoveAsync(RedisKey key, RedisValue member,
CommandFlags flags = CommandFlags.None);
Task<long> SortedSetRemoveAsync(RedisKey key, RedisValue[] members,
CommandFlags flags = CommandFlags.None);
我没有问题传递单个值(例如字符串),它会隐式转换为RevisValue。然而,如果我尝试传入一个数组...
var key = "MYKEY";
var values = new string[] { "A", "B", "C" };
await database.SortedSetRemoveAsync(key, values);
如果编译器不知道如何将string[]转换为RedisValue[],那么你需要进行逐个元素的转换。以下是一个例子:
var values2 = values.Select(s => (Redisvalue) s).ToArray();
await database.SortedSetRemoveAsync(key, values2);
...我不确定这是否是最佳方法。
很奇怪,当有API方法期望数组时,传递一个数组如此困难...单元测试通过传递一个空的RedisValue[]数组并绕过了整个问题。
传递数组参数给接受RedisValue[]数组的StackExchange.Redis方法的推荐方式是什么?