Tag: C#的

如何使用Moq模拟ASP.NET MVC中的HttpContext?

[TestMethod] public void Home_Message_Display_Unknown_User_when_coockie_does_not_exist() { var context = new Mock<HttpContextBase>(); var request = new Mock<HttpRequestBase>(); context .Setup(c => c.Request) .Returns(request.Object); HomeController controller = new HomeController(); controller.HttpContext = context; //Here I am getting an error (read only). … } 我的基础控制器有一个重载的Initialize,得到这个requestContext。 我正试图通过这一点,但我没有做正确的事情。 protected override void Initialize(System.Web.Routing.RequestContext requestContext) { base.Initialize(requestContext); } 我在哪里可以得到更多关于使用Moq嘲弄我的RequestContext和HttpContext的信息? 我试图嘲笑cookies和一般情况。

cout是同步/线程安全的吗?

一般来说,我认为stream不同步,取决于用户做适当的locking。 但是,像cout这样的事情在标准库中得到特殊待遇吗? 也就是说,如果多个线程正在写入cout可以破坏cout对象? 我明白,即使同步你仍然得到随机交错的输出,但交叉保证。 也就是说,从多个线程使用cout是安全的吗? 这个供应商是否依赖? gcc做什么? 重要提示 :如果您说“是”,请为您的答案提供一些参考,因为我需要某种certificate。 我关心的不是底层的系统调用,这些都很好,但是这些stream在顶部添加了一层缓冲。

如何debugging引用的DLL(有PDS)

我的问题涉及到Visual Studio 2008,尽pipe我想在VS2005中它应该是一样的 在我的工作空间中有两个解决scheme,A和B. 解决schemeA是我前一段时间编写的一个较旧的项目。 在解决schemeB中,我需要使用解决schemeA中的一些类。为此,我在解决schemeA中添加对其中一个项目的dll的引用。 问题是当我尝试debugging。 我希望能够进入A的代码。 Visual Studio不能加载这些类的代码(“没有可用的当前位置的源代码”),我只能查看反汇编,这是没有用的。 我知道从解决schemeA中debugging类的唯一方法是运行解决schemeB,分离所有进程(在“debugging”菜单项中)并附加解决schemeA中的进程。 但是,这是非常不方便的,我只能一次debuggingA或B. 有没有办法让步进入引用DLL的代码(我有源代码)? 解决scheme:我的错误是我认为一个项目只能是单一解决scheme的一部分。 事实上,一个项目可以是任何数量的解决scheme的一部分。 当您需要引用旧项目时,只需将项目添加到解决scheme即可。 这可以通过在解决scheme资源pipe理器>添加>现有项目中右键单击新的解决scheme来完成。 然后,您将能够添加项目引用。 正如其他人写的,你应该完全避免使用dll引用你自己的代码(或其他代码,你可能需要更改和debugging)。 有关如何devise解决scheme的非常好的参考可以在MSDN中find。

为什么我们不要抛出这些例外?

我遇到这个MSDN页面 ,指出: 不要从你自己的源代码中故意抛出Exception , SystemException , NullReferenceException或IndexOutOfRangeException 。 不幸的是,它没有解释为什么。 我可以猜出原因,但是我希望有一个更有权威的人可以提供他们的见解。 前两个有一些明显的意义,但后两个似乎是你想要使用的(事实上,我有)。 而且,这些是唯一应该避免的例外吗? 如果有其他人,他们是什么,为什么他们也应该避免?

创build后将属性添加到匿名types

我使用匿名对象将我的Html属性传递给一些辅助方法。 如果消费者没有添加一个ID属性,我想添加它在我的帮手方法。 我怎样才能给这个匿名对象添加一个属性?

在GDB中运行应用程序,直到发生exception

我正在开发一个multithreading应用程序,我想用GDB进行debugging。 问题是,我的一个线程不断死讯: pure virtual method called terminate called without an active exception Abort 我知道这个消息的原因,但我不知道我的线程在哪里发生。 回溯真的会有所帮助。 当我在GDB中运行我的应用程序时,每次线程暂停或恢复时都会暂停。 我希望我的应用程序能够继续正常运行,直到其中一个线程死亡,此时,所有事情都应该停止,以便我可以回溯。

什么时候应该使用std :: move函数返回值?

在这种情况下 struct Foo {}; Foo meh() { return std::move(Foo()); } 我很确定这个举动是不必要的,因为新创build的Foo将是一个xvalue。 但是在这种情况下呢? struct Foo {}; Foo meh() { Foo foo; //do something, but knowing that foo can safely be disposed of //but does the compiler necessarily know it? //we may have references/pointers to foo. how could the compiler know? return std::move(foo); //so here the move […]

我是否应该将debugging信息编译为“完整”或“仅限pdb”?

在用于C#项目的Visual Studio 2010中,如果转到“项目属性”>“生成”>“高级”>“debugging信息”,则有三个选项:none,full或pdb-only。 基于这个问题的答案,我相信我理解了完全和pdb-only之间的一些区别。 但是,哪个更适合发布版本? 如果我使用“全部”,会有性能方面的影响吗? 如果我使用“仅限pdb”,将难以debugging生产问题?

什么是默认(对象); 在C#中做?

谷歌search只是关键字,但我偶然发现了一些代码说 MyVariable = default(MyObject); 我想知道这是什么意思

有一个C#types代表一个整数范围?

我有一个需要存储一个整数范围。 C#4.0中是否有现有的types? 当然,我可以写我自己的类, int From和int To属性,并build立在适当的逻辑,以确保From <= To 。 但如果一个types已经存在,我当然宁愿使用它。