草庐IT

应不应该

全部标签

c# - 我应该使用哪个,CodeContract 还是 CuttingEdge.Conditions?

我研究了使用条件框架来验证数据而不是if(cond)thrownewSomeException();SomeFramework.MakeSure(cond);最后我的选择是使用CodeContract或CuttingEdge.Conditions框架。我无法决定使用哪个框架。我可以告诉你,我不喜欢“CodeContract”框架的地方是你必须安装额外的msi才能使用它以及你需要选择的选项;不是说它不好,而是感觉不自然。(当然,它仍在MS研究中。)你怎么看? 最佳答案 CodeContracts框架是.NET4的一部分。因此您可以针对

c# - 在 C# 中应该如何使用匿名类型?

我看过很多关于匿名类型如何工作的描述,但我不确定它们到底有什么用。在设计良好的程序中,可以使用匿名类型来解决哪些场景? 最佳答案 匿名类型与系统设计无关,甚至与类级别无关。它们是开发人员在编码时使用的工具。我什至不将匿名类型视为类型本身。我主要将它们用作方法级匿名元组。如果我查询数据库然后操作结果,我宁愿创建一个匿名类型并使用它,而不是声明一个永远不会在我的方法范围之外使用或知道的全新类型。例如:varquery=fromitemindatabase.Items//...selectnew{Id=item.Id,Name=item.

c# - 我应该如何在 ASP.NET MVC 中实现 "Forgot your password"?

我使用的是ASP.NETMVC演示附带的标准SqlMembershipProvider。我有兴趣在我的网站上实现“忘记密码”链接。实现此功能的正确方法是什么?我应该用一个临时密码覆盖密码并将其通过电子邮件发送到他们的注册电子邮件吗? 最佳答案 根据应用程序的性质,忘记密码的最佳做法应按以下顺序允许用户验证secret/问题最多3到5次尝试验证成功后,发送一封电子邮件,其中包含随机生成的密码,有效期为24小时。电子邮件必须包含仅密码,但不能同时包含用户名/密码。当用户使用临时密码登录时,必须强制用户在返回主页之前创建新密码。

c# - 我应该关注 linq 查询中的 "access to modified closure"吗?

我有一个显示错误的linq查询:如果集合的源是一个linq查询,每当我尝试访问我正在迭代的变量时,我都会看到这个错误。我想这个错误只是告诉我变量可能会改变,或者类似的东西? 最佳答案 此错误告诉您查询中对pubConfig的引用将使用pubConfig的值在评估查询时,而不是在您定义它并将其存储在pubConfigSettings中时。实际上,如果“当场”评估查询就没问题。如果您保留它供以后评估,而pubConfig的值在此期间发生变化,您将遇到意想不到的结果。 关于c#-我应该关注li

c# - 我应该使用什么 ORM for .net?

我对.NET比较陌生,并且使用Linq2Sql已经快一年了,但它缺少我现在正在寻找的一些功能。我将开始一个新项目,我想在其中使用具有以下特征的ORM:它必须非常高效,我不想处理访问层来从数据库中保存或检索对象,但它应该允许我在实际将其提交到数据库之前轻松调整任何对象;它还应该允许我轻松地使用不断变化的数据库模式它应该允许我扩展从数据库映射的对象,例如向它们添加虚拟属性(虚拟列到表)它必须(至少几乎)与数据库无关,它应该允许我以透明的方式使用不同的数据库它必须没有那么多配置或必须基于约定才能使其工作它应该允许我使用Linq那么,你知道我可以使用的任何ORM吗?感谢您的帮助。编辑我知道一个

c# - 枚举应该放在单独的文件中还是放在另一个类中?

我目前有一个包含以下枚举的类文件:usingSystem;namespaceHelper{publicenumProcessType{Word=0,Adobe=1,}}或者我应该在使用它的类中包含枚举吗?我注意到Microsoft为DockStyle创建了一个新的类文件:usingSystem;usingSystem.ComponentModel;usingSystem.Drawing.Design;namespaceSystem.Windows.Forms{publicenumDockStyle{None=0,Top=1,Bottom=2,Left=3,Right=4,.Fill=5

c# - Queue 上的 IEnumerable 迭代器是否应该使项目出列

我创建了一个实现通用IQueue接口(interface)的自定义通用队列,该接口(interface)使用System.Collections.Generic命名空间中的通用队列作为私有(private)内部队列。示例已清除不相关的代码。publicinterfaceIQueue{voidEnqueue(TQueueItemqueueItem);TQueueItemDequeue();}publicclassCustomQueue:IQueue{privatereadonlyQueuequeue=newQueue();...publicvoidEnqueue(TQueueItemqu

c# - 我应该让我的私有(private)类方法静态化吗?

是否有将类中的私有(private)方法设为静态的最佳实践?我有一个有几种方法的类(class)。其中一些可以很容易地变成静态的,因为它们只是处理数据。我应该让它们保持静态还是保持原样?这更多是风格问题吗?是否有性能方面的考虑?编辑:Methodcanbemadestatic,butshouldit? 最佳答案 如果方法不访问任何类型的状态,那么它们应该是静态的。静态方法调用提供了优于实例方法的性能增益,并且静态方法的存在告诉future代码的读者调用此方法不会对该类型的当前实例的状态产生副作用。静态方法的性能提升来自于这样一个事实

c# - 我什么时候应该写静态方法?

所以我明白了什么是静态方法或字段,我只是想知道什么时候使用它们。也就是说,在编写代码时,什么设计适合使用静态方法和字段。一种常见的模式是将静态方法用作静态工厂,但这可以通过重载构造函数来轻松完成。正确的?例如:varbmp=System.Drawing.Bitmap.LoadFromFile("Image01.jpg");至于静态字段,创建单一对象是否是它们的最佳用途? 最佳答案 静态方法通常适用于不需要来自类实例(来自this)的任何数据的操作,并且可以仅使用它们的参数来执行它们的预期目的。一个简单的例子是Point::dista

c# - 线程安全类是否应该在其构造函数的末尾设置内存屏障?

当实现一个旨在线程安全的类时,我是否应该在其构造函数的末尾包含一个内存屏障,以确保任何内部结构在它们可以被访问之前已经完成初始化?还是消费者有责任在使实例对其他线程可用之前插入内存屏障?简化问题:由于在线程安全类的初始化和访问之间缺少内存屏障,下面的代码中是否存在可能导致错误行为的竞争危险?或者线程安全类本身应该防止这种情况发生吗?ConcurrentQueuequeue=null;Parallel.Invoke(()=>queue=newConcurrentQueue(),()=>queue?.Enqueue(5));请注意,程序不入队是可以接受的,如果第二个委托(delegate)