Orchard 事件通知小坑

public void GetTagLogRecord(int tagId, string keyword, string area) {
            var tag = _repositoryTagRecord.Get(tagId);
            OnlineGet(tag, keyword, area);
        }

  

_jobsQueueService.Enqueue("IClawerService.GetTagLogRecord", new Dictionary<string, object> {
                                { "tagId", tag.Id }
                                , { "keyword", tag.Keyword }
                                , { "area", area }
                            }, 1);
if (cachedDelegate != null) {
                var args = cachedDelegate.Item1.Select(methodParameter => arguments[methodParameter.Name]).ToArray();
    //此处args为object[]数组,调用下面的一句话始终报转换无效的错误,
//调试时将args手动构造成 args = new object[] { 23, "PPAPI", "" };又没问题 !!!!!!
//不知道是不是.NET的bug !!!
                var result = cachedDelegate.Item2(eventHandler, args);

                returnValue = result as IEnumerable;
                if (result != null && (returnValue == null || result is string))
                    returnValue = new[] { result };
                return true;
            }

  

否则  cachedDelegate.Item2  始终报错 :  指定的转换无效 !!!!!

时间: 2024-10-14 13:28:32

Orchard 事件通知小坑的相关文章

一个关于Windows下SetCursorPos和GetCursorPos的小坑

这两天在做一个编辑特定格式Mesh的小工具,需要检查鼠标的移动,一般来说可以用WM_MOUSEMOVE事件解决的,但是我为了省事用了定时查询+设置的方式,也就是: 1 void Frame(void) 2 { 3 //do something else... 4 5 POINT cursorPos; 6 GetCursorPos(&cursorPos); 7 curMoveX = cursorPos.x - cursorBaseX; 8 curMoveY = cursorPos.y - curs

网络编程(三):从libevent到事件通知机制

由于POSIX标准的滞后性事件通知API的混乱一直保持到现在 所有就有libevent.libev甚至后面的libuv的出现为跨平台编程扫清障碍. 下面是WikiPedia对于libevent的介绍    libevent是一个异步事件处理软件函式库以BSD许可证发布. libevent提供了一组应用程序编程接口API让程序员     可以设定某些事件发生时所执行的函式也就是说libevent可以用来取代网络服务器所使用的事件循环检查框架. 由于可以省去对网络的处理且拥有不错的效能 有些软件使用

linux kernel notifier chain(事件通知链)

Linux内核中各个子系统相互依赖,当其中某个子系统状态发生改变时,就必须使用一定的机制告知使用其服务的其他子系统,以便其他子系统采取相应的措施.为满足这样的需求,内核实现了事件通知链机制(notification chain). struct notifier_block { int (*notifier_call)(struct notifier_block *, unsigned long, void *); struct notifier_block *next; int priorit

小程序实践小坑小结(一)

最近自己在做小程序练习,分享一下我遇到的小坑 data数据更新 直接对this.data进行赋值,是无法更新视图绑定的数据的,会造成数据不一致 需要使用this.setData更新 this.data.key = value this.setData({ key: value }) require 暂时不支持绝对路径 const util = require('../../utils/util.js') background-image 不能使用静态文件,只能使用base64和网络图片 可以用<

spring事件通知机制详解

优势 解耦 对同一种事件有多种处理方式 不干扰主线(main line) 起源 要讲spring的事件通知机制,就要先了解一下spring中的这些接口和抽象类: ApplicationEventPublisherAware        接口:用来 publish event ApplicationEvent                  抽象类,记录了source和初始化时间戳:用来定义Event ApplicationListener<E extends ApplicationEvent

支付宝集成的小坑--集成支付宝集成总结(1)

现在很多公司的APP都会有支付环节,特别是现在的O2O项目,我参与过的近两个项目都有集成支付宝对两次集成做一下总结: 第一次集成支付宝,由于我们的做后台的大牛写了十几年代码,而且以前是银行项目的总监,整个支付流程基本上一切听大牛的,我按照做就行.基本上按照支付宝的流程走,支付环节没怎么出问题,总体来说支付流程比较perfect. 第一次集成的小坑: 1)无非就是支付宝里面使用了一些框架如SBJson 等常用的开源框架,而我们项目中也会用到SBJson类似的框架,估计会出现冲突 冲突的解决办法:A

C#中的Infinity有个小坑

(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 昨天家里有事,上网也不方便,就没有推送文章.今天很累,也不长篇大论了.简单介绍一下最近遇到的一个小坑. 我们知道,在C#中主要有如下几种数值类型:int.long.decimal.float和double.对于前三种,如果除零,那么会提示表达式错误(直接书写数字)或报DivideByZeroException异常(使用变量):对于后面两种,除零会得到正负无穷大,除非你是0.0/0.0那么会得到NaN

Linux内核基础--事件通知链(notifier chain)

转载: http://blog.csdn.net/wuhzossibility/article/details/8079025 http://blog.chinaunix.net/uid-27717694-id-4286337.html 内核通知链 1.1. 概述 Linux内核中各个子系统相互依赖,当其中某个子系统状态发生改变时,就必须使用一定的机制告知使用其服务的其他子系统,以便其他子系统采取相应的措施.为满足这样的需求,内核实现了事件通知链机制(notificationchain). 通知

初级知识六——C#事件通知系统实现(观察者模式运用)

观察者模式,绝对是游戏中十分重要的一种模式,运用这种模式,可以让游戏模块间的通信变得简单,耦合度也会大大降低,下面讲解如何利用C#实现事件通知系统. 首先定义两个接口,IEventCenter 和IEventHandlerManager,代码如下: 1 public interface IEventCenter : IDestroy 2 { 3 bool AddEventListener(Enum EventType, EventHandler handler); 4 5 bool Remove