events - 使用 ServiceStack.Redis 存储对象时自动检测

标签 events servicestack

我正在寻找一种订阅事件的方法,例如将特定对象类型存储到 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/

相关文章:

javascript - 处理 'onkeydown'事件

sql-server - 如何在ServiceStack OrmLite中检索自增Id?

redis - 为什么 Redis Pub/Sub 不允许在回调中访问 Redis?

javascript - 使用自定义事件模拟 domready 事件 (mootools)

ruby-on-rails - 如何使用 Ruby 在日历中显示事件?

php - Symfony 事件订阅者对调度没有反应

events - ServiceStack中的ServerEventsClient并发模型

python - 当我使用绑定(bind)函数时,Tkinter Entry/Text 小部件问题

authentication - 将RequestFilter数据添加到Context(请求范围),在服务中检索

jquery - 使用 ServiceStack.Net REST 服务器和 jQuery 客户端在地址栏中显示漂亮的 url