我正在寻找一种订阅事件的方法,例如将特定对象类型存储到 ServiceStack.Redis。 例如我可能
using (var redisClient = new RedisClient())
using (var redisMyObjects = redisClient.As<MyObject>())
{
redisMyObjects.Store(myObject);//<-- I want this to trigger an event somehow
}
是否有类似 OnStore 事件之类的东西我也可以 Hook ,任何开箱即用的东西?如果没有,是否有关于如何完成此操作的任何建议?
最佳答案
我认为没有任何东西可以 Hook (可能是错误的)。
我想到了两个选择:
1 - 创建一个扩展方法
2 - 发布一条消息来存储您的对象,并有一个处理程序来监听响应并执行某些操作。这可能有点矫枉过正,因为它正在进入发布/订阅领域。但我认为,值得研究一下。 ( Basic example here 并参见 Pub/Sub here )。
扩展方法
public static class RedisClientExtensions
{
public static void StoreWithTrigger<T>(this IRedisTypedClient<T> redisClient, T value, Action<T> trigger)
{
redisClient.Store(value);
trigger(value);
}
}
使用扩展方法
public void MyMethod()
{
using (var redisClient = new RedisClient())
using (var redisMyObjects = redisClient.As<MyObject>())
{
redisMyObjects.StoreWithTrigger<MyObject>(new MyObject(), TriggerEvent);//<-- I want this to trigger an event somehow
}
}
private void TriggerEvent<T>(T value)
{
//dosomething
}
希望这能给您一些想法。
关于events - 使用 ServiceStack.Redis 存储对象时自动检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16668063/