以下代码用于在vs2008下正常工作:
namespace N2.Engine.Globalization
{
public class DictionaryScope : Scope
{
object previousValue;
public DictionaryScope(IDictionary dictionary, object key, object value)
: base(delegate
{
if (dictionary.Contains(key))
previousValue = dictionary[key];
dictionary[key] = value;
}, delegate
{
if (previousValue == null)
dictionary.Remove(key);
else
dictionary[key] = previousValue;
})
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
但现在报告非静态字段,方法或属性'N2.Engine.Globalization.DictionaryScope.previousValue'需要对象引用
编译器似乎发生了变化?任何解决方法?
更新:
关于使用虚拟方法的建议.这可能也不会起作用,因为从基础构造函数调用虚方法,我认为这也是不可能的?
这是Scope(基类)的实现:
public class Scope: IDisposable
{
Action end;
public Scope(Action begin, Action end)
{
begin();
this.end = end;
}
public void End()
{
end();
}
#region IDisposable Members
void …
Run Code Online (Sandbox Code Playgroud) 我试图使用Moq测试一个相当复杂的类,并遇到了问题.
我试图验证一个方法不会被调用,通常这可以通过设置MockBehavior.Strict来做到,但是这里该类有自己的错误报告机制,因此它吞下了Moq抛出的异常.
.Verify测试结束时的所有方法也都很好,这真的很奇怪.这是Moq中的一个错误,是否有任何变通方法?
我也尝试在这个方法上设置回调并在其中执行Assert.Fail,但是当它被吞下时,测试框架(VS 2008内置测试)也没有得到通知...
我正在使用Moq 2.6.1014.1.(没时间升级到moq 3)
有没有办法用roslyn诊断分析仪检测ac#6功能?
我有一个解决方案,链接在一个不能使用c#6功能的项目的某些文件中,所以我想为那些文件做出错误.要清楚 - 我不能将整个项目设置为c#5,只有一些文件没有限制.
我可以尝试捕捉特定的功能,但它很麻烦,并想知道是否有更快的方法?
我正在尝试创建以下方案:
所以,我想到使用EventHandlingScope:
因此,尽管eventhandlingscope对此有好处,但它主要是,除了DelayActivity的问题.
如果我在其中一个事件处理程序分支中放置一个延迟活动,它会触发一次,但不会更多.然而,如果我在那里放置onTaskChange活动,那么每当有人改变该任务时它就会触发.
那么,这是预期的行为吗?为什么DelayActivity不循环?我怎么能这样做?我的想法是用CAG,但这看起来有点复杂......
更新:CAG的问题是整个事情都会阻塞,直到延迟活动触发,即使onChange事件被触发.这是有道理的,但使用起来有点棘手.
Update2:我已经对文本进行了重新编写,以使其更加清晰
好的,这是一个奇怪的.
我正在使用.net框架4.我在updatepanel中有一个asp.net按钮,如下所示:
<asp:Button id="btNacinMontaze" runat="server" class="buttonOIHidden" value="nm" CausesValidation="false" onclick="btNacinMontaze_Clicked" clientidmode="Static" UseSubmitBehavior="false"/>
Run Code Online (Sandbox Code Playgroud)
如果我在浏览器中单击它它可以正常工作 - updatepanel更新自己而不刷新整个页面,正确的服务器事件被触发.
如果我在页面内这样做:
document.getElementById("btNacinMontaze").click();
整个页面刷新并触发正确的服务器事件.
如果我从firebug控制台中发出相同的代码行,则只需刷新updatePanel.
如果我在Chrome或IE9中加载相同的页面,它在所有情况下都可以正常工作.我已经跟踪了点击鼠标和通过在Firebug中调试点击代码之间的不同,并在Sys$WebForms$PageRequestManager$_doPostBack
方法中看到了该行
if (!this._postBackSettings.async)
Run Code Online (Sandbox Code Playgroud)
是不同的.单击鼠标时异步为true,代码单击为false.
我不知道为什么会发生这种情况,并且非常感谢任何帮助.