Tôi đang cố gắng tạo nhà cung cấp Redis cho Strathweb.CacheOutput.WebApi2, nhưng cố chuyển đổi từ byte [] -> RedisValue - > byte [] trả về null.StackExchange.Redis truyền RedisValue thành byte [] qua "dưới dạng byte []" trả về giá trị rỗng
Tôi có thể đặt loại đối tượng thành byte [] thay vì var/RedisValue và nó sẽ trả về giá trị dưới dạng byte [], nhưng sau khi nó được đặt thành RedisValue, nó sẽ không chuyển đổi thành byte [].
Giao diện của anh ấy luôn Nhận được đối tượng để tôi không thể ép buộc loại hoặc sử dụng cuộc gọi riêng mà không phải sửa đổi giao diện.
Nếu tôi cố gắng làm một result as byte[]
tôi nhận được Cannot convert type 'StackExchange.Redis.RedisValue' to 'byte[]' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null type conversion
Nếu tôi cố gắng làm một (byte[])result
tôi nhận được Cannot cast 'result' (which has an actual type of 'StackExchange.Redis.RedisValue') to 'byte[]'
Có cái gì tôi đang thiếu hoặc tôi sẽ phải hack nó trong bằng cách nào đó bằng cách kiểm tra loại dữ liệu tìm kiếm dựa trên khóa nào?
Dưới đây là giao diện:
namespace WebApi.OutputCache.Core.Cache
{
public interface IApiOutputCache
{
void RemoveStartsWith(string key);
T Get<T>(string key) where T : class;
object Get(string key);
void Remove(string key);
bool Contains(string key);
void Add(string key, object o, DateTimeOffset expiration, string dependsOnKey = null);
IEnumerable<string> AllKeys { get; }
}
}
Và đây là cách nó được gọi là:
var val = _webApiCache.Get(cachekey) as byte[];
if (val == null) return;
Chỉnh sửa: Thêm ví dụ về các API tôi thực hiện sử dụng cả hai ServiceStack.Redis v3 (làm việc atm vì nó chỉ sử dụng object
và StackExchange.Redis không hoạt động)
https://github.com/mackayj/WebApi.OutputCache.Redis.ServiceStack
https://github.com/mackayj/WebApi.OutputCache.Redis.StackExchange
Vấn đề là giao diện trả về một đối tượng và mã gọi đang thực hiện lệnh 'as byte []'. Tôi đang cố gắng để không sửa đổi hoặc giao diện hoặc mã chính cho nó nhưng tôi nghĩ rằng tôi chỉ sẽ thêm một phương pháp mới mà trả về byte [] cho bây giờ. Tôi đã chỉnh sửa bài viết của mình để hiển thị mã gọi đúng với 'as byte []' – John