草庐IT

付诸实践

全部标签

c# - 在 C# 最佳实践中处理字典

我的session类中有一个ConcurrentDictionary。Key是一个表示管理器类的接口(interface)。值是在此session中用于该管理器的DataContracts类的列表。当我配置session类时,我想清除这个字典。我需要清除所有值和键,但我无法处理键-因为它们在课后仍然存在dispose..这就够了吗?-这会导致GC完成工作吗?_myDictionary=null;或者我需要在所有键上使用foreach进行迭代并使用Remove来清除值。 最佳答案 WhenIdisposethesessionclass

c# - 在 C# 中对同一结果进行多个断言的最佳实践

您认为对结果进行多重断言的最简洁方法是什么?过去我对它们进行了相同的测试,但这开始感觉有点脏,我一直在玩另一个使用设置的想法。[TestFixture]publicclassGridControllerTests{protectedreadonlystringRequestedViewId="A1";protectedGridViewModelResult{get;set;}[TestFixtureSetUp]publicvoidGet_UsingStaticSettings_Assign(){vardataRepository=newXmlRepository("test.xml")

c# - 使用 Oracle DB 和 .NET 时的最佳实践

在以Web服务为中心的.NET应用程序中使用MicrosoftOracle提供程序时,我们需要注意哪些最佳实践或陷阱? 最佳答案 我们根据生产经验采用的一些做法:从连接池中检索连接时验证连接。编写您的服务代码时不要假定连接是有效的——否则会导致相当多的麻烦,尤其是在生产环境中尽可能在使用后显式关闭和处置连接(using(conn){}block效果很好)在服务中,您应该使用尽可能短的连接时间-特别是如果您希望创建可扩展的解决方案。考虑根据请求的典型持续时间对请求使用明确的超时。您最不想看到的是挂起一种可能会阻塞整个系统的请求。尽可能

c# - 重用 SqlConnection 的最佳实践

我有Java经验,正尝试从C#入手。我读过SqlConnectionSqlCommandSqlDataReaderIDisposable我可以理解,连接到数据库的最佳做法是将SqlConnection、SqlCommand和SqlDataReader包装在它们自己的usingblock。但在Java中,我们使用将连接封装到工厂方法中,只创建一次,然后将其重新用于所有查询,甚至是多线程查询。仅为每个查询创建语句和结果集并尽快关闭。为每个查询创建一个新的SqlConnection是不是有点矫枉过正?不能重复使用吗? 最佳答案 创建类Sq

c# - 调试的最佳实践

我最近使用VisualStudio和WinDbg对托管应用程序进行了大量调试,因此我经常被要求协助同事进行调试。有好几次,我发现人们只是在各处插入断点并希望得到最好的结果。根据我的经验,这很少是有用的技术。我的方法是这样的。重现问题。理想情况下尽可能减少输入。检查出了什么问题,并列出错误可能出在哪里的理论。通过调试代码的特定区域,一次检查一种理论。必要时重复步骤。对于复杂的调试问题,我经常与同事合作。对于WinDbg,这尤其有用。还有其他有用的调试技巧或最佳实践吗? 最佳答案 如果我可以给每个人关于调试的一个提示,那就是再次破坏它。

C# Auto Property - 这是 'pattern' 最佳实践吗?

我似乎在我的代码中经常使用这种模式,我知道它不再是一个简单的自动属性:publicIListBCSFilters{get;set;}我一直使用的代码是这样的:privateIList_BCSFilters;//////GetsorsetstheBCSfilters.//////TheBCSfilters.publicIListBCSFilters{get{if(_BCSFilters==null){_BCSFilters=newList();}return_BCSFilters;}set{_BCSFilters=value;}}这样我就可以只执行MainClass.BCSFilters

c# - 存储 key 的最佳实践

我有一个asp.net应用程序,我想存储一个机器范围的加密key,我将在使用DPAPI加密系统时在应用程序中使用它。存储key的最佳做法是什么-我应该将它存储在哪里?谢谢。 最佳答案 将任何key以明文形式存储在任何非volatile和本质上不安全的介质(例如硬盘)中是非常不安全的。在此类介质上,您应该只存储key的签名加密版本,并且对加密key的写入访问应该受到保护。手头的实际工作是对安全需求建模,确定key管理策略和实现。 关于c#-存储key的最佳实践,我们在StackOverfl

c# - 在 C# 中限制访问枚举参数的最佳实践

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion考虑这个问题String.Splitoverload,它需要一个StringSplitOptions枚举作为参数。枚举本身是公开的并且可供包括System命名空间的所有内容访问,这不是很糟糕吗?我的意思是,枚举完全特定于Split方法的选项,但它在其范围之外可用。也许有更好的方法来对此进行建模,例如将枚举放在String类本身中,然后使用String.SplitOptions访问它?我很少

c# - EF Code-First 中查找表的最佳实践

我正在使用EF做我的第一个项目,我打算采用代码优先模型。我试图找到一些关于处理相当经典的“查找表”场景的指导。我正在处理一个非常典型的情况,我将在其中保留地址数据。所以,我有一个简单的地址DTO...publicclassAddress{publicintId{get;set;}publicvirtualstringStreetAddress1{get;set;}publicvirtualstringStreetAddress2{get;set;}publicvirtualstringCity{get;set;}publicvirtualstringState{get;set;}pub

c# - 参数 : IEnumerable vs. IList 与 IReadOnlyCollection 的最佳实践

我知道什么时候会返回IEnumerable来自方法——当延迟执行有值(value)时。并返回List或IList几乎应该只在结果要被修改时才会出现,否则我会返回一个IReadOnlyCollection,所以调用者知道他得到的不是要修改的(这使得该方法甚至可以重用来自其他调用者的对象)。但是,在参数输入方面,我不太清楚。我可以拿IEnumerable,但如果我需要多次枚举怎么办?俗话说“对发送的内容要保守,对接受的内容要自由”建议采取IEnumerable很好,但我不太确定。例如,如果以下IEnumerable中没有元素参数,通过检查.Any()可以在此方法中节省大量工作首先,这需要T