小编Ale*_* Dn的帖子

.NET装箱/拆箱与铸造性能

我试图从性能的角度理解两种解决方案中哪一种更受欢迎.例如,我有两段代码:

1)拳击/拆箱

int val = 5;
Session["key"] = val; 
int val2 = (int)Session["key"];
Run Code Online (Sandbox Code Playgroud)

2)Casting(IntObj有int属性来存储int)

IntObj val = new IntObj(5);  
Session["key"] = val;
int val2 = ((IntObj )Session["key"]).Value;
Run Code Online (Sandbox Code Playgroud)

这些例子之间的内存管理差异是什么?有没有更快的方法来执行此类操作?

注意: Session例如,它可以是任何Dictionary<string, object>

.net c# performance

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

Visual Studio 2012 - 项目模板到"添加"上下文菜单

我成功创建并将新项目模板添加到Visual Studio 2012.

现在,我可以使用"解决方案资源管理器\添加\新项目"对话框中的右键单击来创建该新项目.

但是如何添加此项模板直接显示在"添加"上下文菜单中? 在此输入图像描述

谢谢

ide templates visual-studio-2012

8
推荐指数
0
解决办法
290
查看次数

jqGrid - 单击,右键单击onSelectRow

在jqGrid中,在行选择之​​前是否有"内置"方式知道单击了什么鼠标按钮?

目前我们有jqGrid,在jqGrid的"onSelectRow"事件上绑定了一些动作.问题是当用户右键单击该行时,onSelectRow事件被提升到并执行操作.我需要的是当用户右键单击一行时忽略"onSelectRow".

编辑:我知道存在onRightClickRow事件,但它在onSelectRow和行动已经执行后引发.

我发现我可以知道事件对象的"类型"点击了什么按钮.单击时,右键单击时类型为"click",类型为"contextmenu"....是否存在其他方式,或者我必须检查类型以了解单击了哪个按钮?

谢谢

javascript jqgrid

7
推荐指数
1
解决办法
8426
查看次数

MS SQL Server跨表约束

我有三张桌子:

1)应用程序(AppId,名称)
2)屏幕(ScreenId,名称)
3)关系(AppId,ScreenId)

现在我想对相关表应用一些限制:可以将同一个屏幕分配给多个应用程序,但不能有两个同名的屏幕分配给同一个应用程序.

我知道我可以将Screen.Name添加到关系表,然后在AppId和Screen.Name上创建PK,但我不想要这样的解决方案,因为Screen.Name可能会发生变化.

我还有哪些额外的选择来实现这种限制?

sql t-sql sql-server

7
推荐指数
1
解决办法
1710
查看次数

读取Global.asax中的HttpContext.Current.Response.OutputStream

我如何阅读HttpContext.Current.Response.OutputStreamGlobal.asax End_Request 的全部内容?

我想获取发送到浏览器的内容文本?我试着谷歌,但没有找到有用的东西.

实际上我希望这是可能的,我不需要为这个简单的要求创建一个过滤器或东西.

谢谢.

c# asp.net stream global-asax

6
推荐指数
0
解决办法
4380
查看次数

访客设计模式 - 返回类型

我使用Visitor设计模式来解决系统中的一个问题.作为参考如何实现它我使用DoFactory网站这个YouTube视频.

在DoFactory示例中,访问者使用返回类型为"void"的方法,在YouTube视频中,作者使用"double".

为什么我问:
在向公司首席技术官提交解决方案之后,他接受称其为访客,但他声称如果访客不像GoF中所说的那样"无效",就像滥用真实的访客模式一样.

问题:
访客模式是否需要返回"无效"?
我的意思是为了成为"真实的访客模式",因为DoFactory(GoF)描述它,或者它可以是任何返回类型,仍然可以被称为"真实访客模式"?

architecture design-patterns visitor-pattern

6
推荐指数
1
解决办法
4014
查看次数

jQuery自定义事件数据(订阅和触发器)

我想弄清楚,我如何为自定义事件设置参数.我在订阅事件时如何设置参数,然后在触发事件时添加一些额外的数据.

我有一个简单的JS用于测试,但在"handle"的e参数中,我只看到了subscribe的数据.

function handle(e) {
    //e.data has only "b"
    alert(e.data);
}

function myObj() {
    this.raise = function () {
            //Trigger
        $(this).trigger("custom", { a: "a" });
    }
}

var inst = new myObj();
//Subscribe
$(inst).bind("custom", { b: "b" }, handle);
inst.raise();
Run Code Online (Sandbox Code Playgroud)

谢谢.

javascript jquery javascript-events

5
推荐指数
1
解决办法
2069
查看次数

.NET MVC自定义验证(无数据注释)

使用.NET MVC和代码优先EF来实现所请求的功能.业务对象相对复杂,我System.ComponentModel.DataAnnotations.IValidatableObject用来验证业务对象.
现在我试图找到方法,如何使用MVC ValidationSummary显示业务对象的验证结果,而不使用数据注释.例如(非常简化):

业务对象:

    public class MyBusinessObject : BaseEntity, IValidatableObject
    {
        public virtual IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
        {
           return Validate();
        }
        public IEnumerable<ValidationResult> Validate()
        {
           List<ValidationResult> results = new List<ValidationResult>();

           if (DealType == DealTypes.NotSet)
           {
                results.Add(new ValidationResult("BO.DealType.NotSet", new[] { "DealType" }));
           }

           return results.Count > 0 ? results.AsEnumerable() : null;
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在在我的MVC控制器中我有这样的事情:

    public class MyController : Controller
    {
        [HttpPost]
        public ActionResult New(MyModel myModel)
        {
           MyBusinessObject bo = GetBoFromModel(myModel);
           IEnumerable<ValidationResult> result = bo.Validate();
           if(result == null)
           {
               //Save …
Run Code Online (Sandbox Code Playgroud)

validation asp.net-mvc

5
推荐指数
1
解决办法
5041
查看次数

jQuery"by attribute"选择器

我有一个非常简单的例子jsfiddle:

HTML:

<input type="text"/>
<input type="text" value="aaa"/>
Run Code Online (Sandbox Code Playgroud)

JS:

$("input:first").val("aaa");
alert($("input[value='aaa']").length);?
Run Code Online (Sandbox Code Playgroud)

为什么Chrome和IE会返回不同的结果?为什么Chrome中的jQuery在使用jQuery设置时无法识别"价值"?
我怎么解决呢?我需要Chrome将返回与IE完全相同的结果.

编辑:我没有接受我的回答,因为在考虑了一点之后,我仍然不理解一些事情(也许我对几个部分是错的):

1)据我所知,浏览器在文本框中显示的文本应始终为"value"属性,因为如果我提交表单,文本框和其他输入字段中显示的"值"将提交给服务器(如果它们不是禁用).

2)因此,如果文本框中显示的文本应存储在"值"中以便提交,那么如果$("input[type='text']").val("aaa")将文本"aaa"分配给"value"属性,则很自然,因为它可能会在以后提交.如果是这样,为什么$("input[value='aaa']")不拿起它?

3)其他一些东西....当我不使用jQuery的"val"方法,而是直接将文本输入到文本框中,那么它不会转到"value"属性?我做了另一个例子,我不使用"val"将文本分配给文本框.我直接在文本框中输入它,然后$("input[value='aaa']")再不接它.

这对我来说非常奇怪......我理解属性和属性之间的区别,但是由于HTML表单的性质,我不明白为什么"val"没有赋值给属性,当直接输入时,它不会去将"值"属性赋予.

更新了jsfiddle

顺便说一句:在http://blog.jquery.com/2011/05/12/jquery-1-6-1-released/我发现以下内容:

不应使用.attr()和.prop()来获取/设置值.使用.val()方法(尽管使用.attr("value","somevalue")将继续工作,就像1.6)之前一样.

他们说"val"应该设置属性......或者我的英语不允许我理解它?

请解释我:)

javascript jquery jquery-selectors

4
推荐指数
1
解决办法
1615
查看次数

Monitor.TryEnter/Monitor.Exit和SynchronizationLockException

是否有可能检测到同一个线程是否试图释放锁定?我们在代码中有很多地方看起来像:

try
{
    try
    {
       if(!Monitor.TryEnter(obj, 2000)) 
       { 
            throw new Exception("can not lock"); 
       }
    }
    finally
    {
       Monitor.Exit(obj);
    }
}
catch
{
    //Log
}
Run Code Online (Sandbox Code Playgroud)

上面的代码非常简化,实际上Enter和Exit语句位于自定义对象(lock manager)中.

问题是,在那个结构中,我们SynchronizationLockException在尝试"退出"时有,因为它看起来像是没有成功锁定的线程,试图最终释放.

所以问题是,我怎么知道创建Monitor.Exit的线程是否与Monitor.Enter的线程相同?
我以为我可以使用CurrentThread.Id同步进入和退出,但我不确定它是否"足够安全".

.net c# multithreading locking

4
推荐指数
2
解决办法
7107
查看次数