小编Nel*_*mel的帖子

将NodeList转换为数组

我很难NodeList在IE 8 中将数据转换为数组.以下在Chrome中完美运行,但在IE 8 toArray()中无法识别为有效:

NodeList.prototype.toArray = function() {
    var a = [];

    for (var i = 0, len = this.length; i < len; i++) {
        a[i] = this[i];
    }

    return a;
}

document.all.tags("div").toArray();
Run Code Online (Sandbox Code Playgroud)

我尝试将一个原型函数添加到一个数组只是为了检查我的理智,它正常工作.这让我觉得IE 8实际上并没有返回NodeList?这是一个完整的例子:

http://jsfiddle.net/e4RbH/

我究竟做错了什么?

javascript prototype nodelist internet-explorer-8

8
推荐指数
3
解决办法
4945
查看次数

Null-Conditional运算符是否在连续的用法站点中进行了优化,还是会导致重复检查?

使用空条件运算符重复空检查吗?例如

var x = instance?.Property1;
var y = instance?.Property2;
Run Code Online (Sandbox Code Playgroud)

这会编译成这样:

if (instance != null)
{
  var x = instance.Property1;
  var y = instance.Property2;
}
Run Code Online (Sandbox Code Playgroud)

或这个?

if (instance != null)
{
  var x = instance.Property1;
}

if (instance != null)
{
  var y = instance.Property2;
}
Run Code Online (Sandbox Code Playgroud)

如果是前者,如果两行之间还有其他代码,它会有所不同吗?换句话说,编译器/优化器有多聪明?

c# c#-6.0

8
推荐指数
3
解决办法
136
查看次数

存储过程中END之后的语句

我今天遇到了一个有趣的问题.我正在改变存储过程并在最后放置一个select语句.它本来是临时的,只是用于处理数据.我很惊讶后来发现声明已经保存并且在SP运行时正在执行.

SET ANSI_NULLS ON
GO

-- Comments usually go here and are saved as part of the SP
ALTER PROCEDURE [dbo].[MySP]
    @param INT
AS
BEGIN
    --Your normal SQL statements here
END

--You can also add SQL statements here
select * from LargeTable

--You have access to the params
select @param
Run Code Online (Sandbox Code Playgroud)

有意义的是保存所有内容,而不仅仅是BEGIN/END内部的内容,否则评论SET ANSI_NULLS等会消失.我对从哪里开始有点困惑,所以我有几个问题:

  1. SET ANSI_NULLS被保存为SP的一部分.我已经确认每个SP都有自己的价值.SQL Server如何知道将其保存为SP的一部分,因为之前没有引用它?它是否对当前环境状态进行全面扫描,然后在ALTER PROCEDURE运行时保存状态(可能只是非默认值)?
  2. 显然BEGIN/END是可选的,没有内在含义.为什么他们甚至包括在内?它们给出了一种不存在的错误范围.在我看来,没有BEGIN/END和最后的GO会最有意义.

t-sql stored-procedures

7
推荐指数
2
解决办法
2348
查看次数

WCF:在IErrorHandler中提供通用的FaultException

一些上下文:我们有一个自定义XSD,并使用WSCF.blue生成WSDL和C#代码.客户端使用ChannelFactory<T>并共享接口,该接口包括WSCF.blue添加的所有属性以匹配XSD中的内容.

我正在尝试实现IErrorHandler.ProvideFault它提供泛型的地方FaultException<T>,但在客户端我得到的是非泛型的FaultContract.这是我的ProvideFault方法的样子:

public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
{
    if (!(error is FaultException))
    {
        FaultException faultException = FaultExceptionFactory.CreateFaultException(error);
        MessageFault messageFault = faultException.CreateMessageFault();
        fault = Message.CreateMessage(version, messageFault, faultException.Action);
    }
}
Run Code Online (Sandbox Code Playgroud)

在每个服务方法中,如果我使用try/catch,throw FaultExceptionFactory.CreateFaultException(ex)它按预期工作,所以我认为[FaultContract],工厂,绑定等都是正确的.以防万一,这就是工厂的工作原理:

BusinessRuleFaultExceptionType businessRuleFaultException = new BusinessRuleFaultExceptionType();
BusinessRuleFaultException.Code = exception.Code.ToString();
BusinessRuleFaultException.Reason = exception.Message;
return new FaultException<BusinessRuleFaultExceptionType>(
    businessRuleFaultException,
    exception.Message,
    new FaultCode(exception.Code.ToString())
);
Run Code Online (Sandbox Code Playgroud)

我认为问题在于如何创建消息IErrorHandler,也许是在CreateMessageFault().我已经读过这个动作应该faultException.Action代替null,但实际上faultException.Actionnull.也许这导致了这个问题.我可以在工厂设置一个动作,但是动作应该是什么,为什么不会出现手动抛出? …

c# wcf ierrorhandler xmlserializer wcf-extensions

7
推荐指数
2
解决办法
6841
查看次数

HTML div可以在浏览器窗口之外?

我正在玩ASP.NET Web Parts,它有一个"下拉"div.它一直到页面右侧.当我点击它时,它会离开窗户.通常,可视区域外的任何内容都会触发底部滚动条.这怎么可能?

alt text http://i42.tinypic.com/4sejww.png

编辑:它是Internet Explorer 8.下面是带有一些上下文的标记.我认为相关的一个是id = WebPart_wp774658725VerbsMenu.默认情况下,它不显示.当你点击td/span Verbs/span VerbsPopup(可能是任何)时,它会显示"下拉列表".在开发人员工具中,我没有看到任何JavaScript附加到这些元素,但如果我调试它,我看到它运行一些.

<TD class=partTitle>
  <TABLE style="WIDTH: 100%" border=0 cellSpacing=0 cellPadding=0>
    <TBODY>
      <TR>
        <TD style="WIDTH: 100%; WHITE-SPACE: nowrap; CURSOR: move" id=WebPartTitle_wp774658725><SPAN title="Billing Information">Billing Information</SPAN>&nbsp;</TD>
        <TD style="WHITE-SPACE: nowrap">
          <SPAN style="PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; DISPLAY: inline-block; COLOR: white; CURSOR: hand; TEXT-DECORATION: none; PADDING-TOP: 1px" id=WebPart_wp774658725Verbs>
            <SPAN style="FONT-FAMILY: Marlett; FONT-SIZE: 8pt" id=WebPart_wp774658725VerbsPopup>u</SPAN>
          </SPAN>
          <DIV style="DISPLAY: none" id=WebPart_wp774658725VerbsMenu>
            <TABLE style="BORDER-BOTTOM: white 1px solid; BORDER-LEFT: white 1px solid; BACKGROUND-COLOR: maroon; WIDTH: 100%; …
Run Code Online (Sandbox Code Playgroud)

html css asp.net web-parts

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

在派生类中使属性只读

我正在覆盖我的派生类中的一个属性,我想让它只读.C#编译器不允许我更改访问修饰符,因此它必须保持公开.

最好的方法是什么?我应该扔进InvalidOperationExceptionset { }吗?

c# overriding properties access-modifiers

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

使用Web Garden模拟Web Farm会话问题?

我刚刚在IIS应用程序池中偶然发现了"Web Garden"的概念.也就是说,当多个进程服务于同一网页时.据我所知,这意味着ASP.NET InProc会话与Web场具有相同的问题.

我的问题是,假设您的生产环境是一个Web场,但您的开发/测试环境不是,那么在dev/test中设置"Web Garden"是否有帮助?我认为这有助于及早发现任何多进程/服务器问题,或者至少确认一切都按预期工作.

asp.net web-farm web-garden iis-7.5

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

避免在泛型类中装箱和拆箱

下面是一些快速代码来说明我的问题.有什么方法可以避免这种明显不必要的拳击/拆箱?

public class TestClass<T>
{
  public T TestMethod()
  {
    if (typeof(T) == typeof(bool))
    {
      return true; // doesn't work
      return (T)(object)true; // works, but any way to avoid this?
    }

    return default(T);
  }
}
Run Code Online (Sandbox Code Playgroud)

c# generics boxing unboxing

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

DI与自动生成的Web服务客户端

我正在尝试在整个应用层中进行依赖注入,并且遇到了我确信其他人已经看到的场景.我们使用了一些第三方Web服务,并且使用基类自动生成客户端.客户端没有接口,数据类型位于同一文件/项目中.

显而易见的问题是,如果我想进行单元测试,我需要模拟服务.我需要提取一个接口并将数据类型移动到真实/模拟客户端可用的"合同"项目中.但是,下次自动生成客户端时,需要重做工作.在运行时创建代理没有多大帮助,因为我们必须从WSDL手动创建接口和数据类型.有没有更好的方法来处理这个?

c# unit-testing web-services dependency-injection

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

提交如何保持有序

关于Mercurial的快速​​提问.假设我的同事和我都有最新的主干副本.我们都做出了改变,然后我们都推动/拉动彼此之间的变化.

我猜测Mercurial根据提交日期按顺序保留更改(因为没有递增修订,只有GUID).那么,如果我的计算机的日期落后一天,并且在我的同事之后花了半天,会发生什么.我的变化会在我同事的前半天出现吗?

version-control mercurial

5
推荐指数
2
解决办法
149
查看次数