小编Mon*_*der的帖子

jQuery .on(); vs JavaScript .addEventListener();

有人可以解释一下,为什么事件处理程序的执行顺序有所不同,具体取决于它们的附加方式?在下面的示例中,我使用.on().addEventListener()方法处理不同DOM元素上的特定事件.

jsfiddle:http://jsfiddle.net/etsS2/

我认为在这个特定的例子中,事件处理程序的执行顺序取决于event-bubbling- 所以从原始事件开始target并向上移动到document元素.

document.getElementById('outer').addEventListener('mouseup', function (event) {
//$('#outer').on('mouseup', function (event) {
    alert('This alert should not show up!');
}, false);
Run Code Online (Sandbox Code Playgroud)

如果我取消注释on();版本,一切都按预期工作 - jQuery处理事件的方式是否与普通相反JavaScript

javascript jquery event-handling

37
推荐指数
2
解决办法
6万
查看次数

基于方法名称和参数值缓存键构造

我决定在我们的一个应用程序中实现缓存外观 - 目的是最终减少网络开销并限制db命中量.我们正在使用Castle.Windsor我们IoC Container,我们决定Interceptors使用System.Runtime.Caching命名空间在我们的服务层之上添加缓存功能.

在这一刻,我无法弄清楚什么是构建它的最佳方法cache key.目标是区分不同的方法,并且还包括传递的参数值 - 这意味着这两个方法调用应该缓存在两个不同的键下:

IEnumerable<MyObject> GetMyObjectByParam(56); // key1
IEnumerable<MyObject> GetMyObjectByParam(23); // key2
Run Code Online (Sandbox Code Playgroud)

现在我可以看到两种可能的实现:

选项1: 装配| 班级| 方法返回类型| 方法名称| 参数类型| 参数哈希码

"MyAssembly.MyClass IEnumerable<MyObject> GetMyObjectByParam(long) { 56 }";
Run Code Online (Sandbox Code Playgroud)

选项2: MD5或SHA-256基于方法的完全限定名称和传递的参数值计算散列

string key = new SHA256Managed().ComputeHash(name + args).ToString();
Run Code Online (Sandbox Code Playgroud)

我正在考虑第一个选项,因为第二个选项需要更多的处理时间 - 另一方面,第二个选项强制执行所有生成的键的完全相同的"长度".

假设第一个选项将为使用复杂参数类型的方法生成唯一键是否安全?或者也许有一种完全不同的做法?

帮助和意见将受到高度赞赏!

c# hash caching dictionary

8
推荐指数
1
解决办法
4655
查看次数

Castle ActiveRecord:“ System.Int32”不能转换为“ System.Boolean”类型

我在SqlNamedQuery属性中遇到了一些问题,该属性已添加到Castle的ActiveRecord的较新版本中。我已经这样指定了:

[assembly: SqlNamedQuery(Queries.GetItemName, "EXEC [dbo].[GetItemName] :id")]
Run Code Online (Sandbox Code Playgroud)

除此之外,我在结果映射中有一个属性声明为:

...
[Property(Access = PropertyAccess.AutomaticProperty, NotNull = true)]
public virtual bool IsPrimaryName { get; set; }
...
Run Code Online (Sandbox Code Playgroud)

Nhibernate查询:

IQuery query = Session.GetNamedQuery(Queries.GetItemName);
query.SetParameter("id", 1212, NHibernateUtil.Int64);
query.SetResultTransformer(Transformers.AliasToBean<Mapping>());
Run Code Online (Sandbox Code Playgroud)

执行后,我收到以下异常:

Object of type 'System.Int32' cannot be converted to type 'System.Boolean'.
Run Code Online (Sandbox Code Playgroud)

我还添加了以下web.config条目,但没有成功(可能仅适用于hql查询)。

<add key="query.substitutions" value="true 1, false 0, yes 'Y', no 'N'" />
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是-我该如何解决这个问题?存储过程返回0或1,但我也尝试过使用“ 1”,“ true”,“ TRUE”等。如何解决此问题?或者,也许我应该删除SqlNamedQueries?

更新:堆栈跟踪

[ArgumentException: Object of type 'System.Int32' cannot be converted to type 'System.Boolean'.]
System.RuntimeType.TryChangeType(Object value, Binder binder, CultureInfo culture, Boolean needsSpecialCast) +4070954 …
Run Code Online (Sandbox Code Playgroud)

sql-server nhibernate castle-activerecord

2
推荐指数
1
解决办法
3245
查看次数