我試圖爲一個字節[] - > RedisValue轉換爲Strathweb.CacheOutput.WebApi2創建一個Redis提供程序, > byte []返回null。StackExchange.Redis將RedisValue轉換爲byte []通過「as byte []」返回null
我可以手動將對象類型設置爲byte []而不是var/RedisValue,它將正確地將該值作爲byte []返回,但是在將其設置爲RedisValue後,其無法將其轉換爲字節[]。
他的接口有Get始終返回一個對象,所以我不能強制類型或使用單獨的調用而不必修改接口。
如果我嘗試做一個result as byte[]
我得到 Cannot convert type 'StackExchange.Redis.RedisValue' to 'byte[]' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null type conversion
如果我嘗試做一個(byte[])result
我得到Cannot cast 'result' (which has an actual type of 'StackExchange.Redis.RedisValue') to 'byte[]'
有我丟失的東西還是我將不得不破解它以某種方式通過檢查基於密鑰尋找哪種類型的數據?
這裏的接口:
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; }
}
}
這裏是其所謂的如何:
var val = _webApiCache.Get(cachekey) as byte[];
if (val == null) return;
編輯:API的實例添加我實現同時使用ServiceStack.Redis V3(因爲它ATM工作只是使用object
和StackExchange.Redis不工作)
https://github.com/mackayj/WebApi.OutputCache.Redis.ServiceStack
https://github.com/mackayj/WebApi.OutputCache.Redis.StackExchange
問題是接口正在返回一個對象,調用代碼正在做一個'as byte []'。我試圖不修改接口或主代碼,但我想我現在只是添加一個返回字節[]的新方法。我編輯我的帖子,顯示正確的調用代碼與'作爲字節[]' – John 2014-10-03 17:43:40