Я бы хотел позвонить по телефону IDatabase.SortedSetAsync
(StackExchange.Redis). Сигнатура для этого метода является:Как передать массив методу StackExchange.Redis с помощью команды RedisValue []?
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);
... то компилятор не имеет ни малейшего представления о том, как преобразовать строку [] в RedisValue [].
Единственный способ, которым я управлял преобразование, сделав преобразование каждого товара:
var values2 = values.Select(s => (Redisvalue) s).ToArray();
await database.SortedSetRemoveAsync(key, values2);
... и я не уверен, является ли это лучший способ сделать это.
Очень странно, что передать массив, когда есть методы API, ожидающие массивы ... unit tests принять легкое направление, пройдя пустым массивом RedisValue [] и обойдя проблему в целом.
Каков рекомендуемый способ передачи аргументов массива методам StackExchange.Redis, принимающим RedisValue [] массивы?