草庐IT

c# - 我可以根据 .NET Framework 版本创建预处理器指令吗?

这是我想做的具体例子。考虑string.Join功能。在.NET4.0之前,只有两个重载,都需要一个string[]。参数。从.NET4.0开始,有新的重载采用更灵活的参数类型,包括IEnumerable.我有一个图书馆,其中包括Join本质上执行.NET4.0string.Join功能的功能功能确实如此。我只是想知道是否可以使此函数的实现依赖于目标.NET框架。如果是4.0,它可以简单地调用string.Join在内部。如果是3.5或更早版本,它可以调用自己的内部实现。这个想法有意义吗?如果确实有意义,那么最合乎逻辑的方法是什么?我想我只是假设预处理器指令最有意义,因为调用strin

c# - 我可以在 RESTful 服务中使用 TCP 吗?

REST正在使用Web的当前功能并在其上应用一些原则以提高其效率。它使用标准的HTTP动词进行通信,并利用其无状态特性。但是,REST服务是否可能使用TCP协议(protocol)进行通信?如果是,那么是否会违反其原则? 最佳答案 HTTP是一种基于TCP/IP的协议(protocol)。因此,当您使用REST时,您已经在使用TCP进行通信。但是如果你想在没有HTTP的情况下通过纯TCP套接字使用REST,那么不,这没有意义,因为REST基于HTTP动词和header。这些概念仅存在于HTTP协议(protocol)中。

c# - 我可以在锁中放一个返回语句吗

欺骗:returnstatementinalockprocedure:insideoroutside标题有点误导。我知道您可以做到,但我想知道对性能的影响。考虑这两个代码块。(没有错误处理)这个block在锁之外有returnpublicDownloadFileDequeue(){DownloadFiletoReturn=null;lock(QueueModifierLockObject){toReturn=queue[0];queue.RemoveAt(0);}returntoReturn;}这个block有return语句在锁中publicDownloadFileDequeue()

c# - RedirectingResponse.AsActionResult() 不再存在,对于 DotNetOpenAuth,我可以用什么替换它?

我试图复制Rick在这里为OpenID实现所做的事情:http://www.west-wind.com/weblog/posts/899303.aspx但是,当我到达这一部分时:returnreq.RedirectingResponse.AsActionResult();那我就不能继续了,因为AsActionResult已经不存在了,有什么可以替代的吗?非常感谢 最佳答案 它仍然存在。这是一种扩展方法,您只能通过将其放在文件顶部来获得:usingDotNetOpenAuth.Messaging;

c# - 如何创建任务<>我可以手动完成

在对组件进行单元测试时,我需要验证组件如何对在不同时间完成的任务使用react。如何创建Task我可以随意解决? 最佳答案 您可以使用TaskCompletionSource创建一个完全“手动”的任务。RepresentstheproducersideofaTaskunboundtoadelegate,providingaccesstotheconsumersidethroughtheTaskproperty.将完成源的Task属性交给消费者,并(随意)调用SetResult来完成任务。请注意,您还有SetCanceled和SetE

c# - 为什么接口(interface)定义中需要参数名称?我可以在实现过程中选择新的参数名称

不确定这是否是一个愚蠢的问题,但我刚刚注意到这一点:publicinterfaceIActivityDao:IDao{IListGetAllSinceSequence(longsequence,intcount);}publicclassActivityDao:AbstractNHibernateDao,IActivityDao{publicIListGetAllSinceSequence(longsequence,intmaxRecords){}}在我的实现中,我将第二个参数称为“maxRecords”。然而,在界面中,它被定义为“计数”。编译器仍然考虑实现的接口(interface

c# - 我可以依靠 GetHashCode() 的值保持一致吗?

假设使用相同的字符串值,GetHashCode()的返回值是否保证一致?(C#/ASP.NET)我今天将我的代码上传到服务器,令我惊讶的是我不得不重新索引一些数据,因为我的服务器(win200864位)返回的值与我的台式计算机不同。 最佳答案 如果我没记错的话,GetHashCode在给定相同值的情况下是一致的,但不能保证在不同版本的框架中保持一致。来自String.GetHashCode()上的MSDN文档:ThebehaviorofGetHashCodeisdependentonitsimplementation,whichmi

c# - 我可以在 C# 中将 json 反序列化为匿名类型吗?

我从数据库中读取了一个很长的json。我只想要该json的一个属性。我有两个选择:一种。为该json创建一个接口(interface)并反序列化到该接口(interface)。(这是不是太过分了,因为我只需要一个属性?)b.找到我需要的子字符串(正则表达式?)首选哪个?更新:我正在使用.net3.5 最佳答案 你为什么不反序列化使用JSON.NET的“LINQtoJSON”方法(JObject等)并仅通过名称询问您需要的值?这是足够动态的,因此您不需要为一切创建接口(interface),但它比使用正则表达式要安全得多。JObjec

c# - 我可以告诉 .NET GC 不理会某些线程吗?

我正在研究将相对较小的服务从C++重写为C#的可能性。该服务有两个主要功能:偶尔执行HTTP请求。它们涉及几个高级任务,例如JSON编码/解码、base64编码/解码和HTTP请求本身,C++对此并不出色;执行许多具有严格截止日期的实时音频相关任务,而C#对此并不出色。实时任务由一个单独的库处理,该库执行自己的线程操作,几乎不与服务的其余部分交互。该服务的其余部分每5分钟左右向它提供一些从HTTP请求中获取的数据。问题是,由于实时部分有严格的期限,我真的不能容忍库线程上的GC暂停。在我自己的代码方面,GC应该有足够的时间在Web请求之间运行,但我不能容忍它在我尝试向库提供数据时启动。我

c# - 我可以在 .NET 应用程序中临时覆盖 DNS 解析吗?

我有一些包装代码可以运行一组NUnit测试,扫描实时网站以获取特定响应代码。我想在不同的服务器上运行这些测试。手动运行时,我可以通过编辑Windows\System32\drivers中的/etc/hosts文件并将www.mysite.com临时设置为10.0.0.whatever来完成此操作有什么方法可以在.NET控制台应用程序中执行相同的操作-临时覆盖DNS记录或以某种方式拦截解析并返回不同的IP地址?编辑:这是为了测试网络场中的多台服务器。我有三台实时服务器,它们都认为是www.example.com。因为服务器使用HTTP主机header,所以我不能只对server1、ser