草庐IT

why-you-should-replace-enum-with-

全部标签

c# - "Possible multiple enumeration of IEnumerable"与 "Parameter can be declared with base type"

在Resharper5中,以下代码导致list出现警告“Parametercanbedeclaredwithbasetype”:publicvoidDoSomething(Listlist){if(list.Any()){//...}foreach(variteminlist){//...}}在Resharper6中,情况并非如此。但是,如果我将方法更改为以下内容,我仍然会收到该警告:publicvoidDoSomething(Listlist){foreach(variteminlist){//...}}原因是,在这个版本中,list只枚举一次,所以改成IEnumerable不会自动

c# - 具有路由属性的模糊 Controller 名称 : controllers with same name and different namespace for versioning

我正在尝试添加API版本控制,我的计划是为不同命名空间中的每个版本创建一个Controller。我的项目结构是这样的(注意:每个版本没有单独的区域)Controllers||---Version0||||-----ProjectController.cs||-----HomeController.cs||---Version1||-----ProjectController.cs|-----HomeController.cs我正在为路由使用RoutingAttribute。因此,Version0中的ProjectController具有路由功能namespaceMyProject.Co

c# - LINQ Order By Descending with Null Values on Bottom

这个问题在这里已经有了答案:LINQorderbynullcolumnwhereorderisascendingandnullsshouldbelast(10个答案)关闭8年前。我有这样的表达:troubletickets=db.ServiceTickets.Include(t=>t.Company).Include(t=>t.UserProfile);troubletickets.OrderByDescending(t=>t.UserProfile!=null?t.UserProfile.FirstName:"ZZZ");我必须检查UserProfile是否为null,因为如果不这样

c# - 如何显示 "Open with"文件对话框?

有什么简单的方法可以打开“打开方式”文件对话框吗? 最佳答案 一些使用ProcExp的逆向工程揭示了一个rundll32.exe命令行是有效的。这是一个使用它的示例程序:usingSystem;usingSystem.Diagnostics;usingSystem.IO;classProgram{staticvoidMain(string[]args){ShowOpenWithDialog(@"c:\temp\test.txt");}publicstaticvoidShowOpenWithDialog(stringpath){var

c# Panel with auto scroll - 在控件焦点上重置滚动条位置

这是一个Windows窗体。面板有AutoScroll=True我正在向主面板动态添加面板,最终超出了主面板显示矩形。然后将标签、组合框和文本框添加到添加的面板。如果我选择一个组合框或文本框,它会将主面板滚动条位置重置为0,并且组合框的下拉菜单将放置在屏幕X、Y上,如果没有滚动条,它应该位于该位置重置。我正在考虑在选择控件时保存滚动位置。经过测试,滚动位置似乎尚未重置,因此我可以在此处捕获它。然后我希望在面板的某个事件上恢复滚动位置。我正在尝试找出我将使用什么事件来恢复滚动位置。我也希望下拉菜单在我执行此操作时将放置在正确的x,y处。更好的解决方案是创建一个基于面板控件的自定义控件并可

c# - 是否建议为所有 C# 枚举添加后缀 "Enum"以避免命名冲突?

Thisstackoverflowquestion有一个有趣的讨论关于如何避免给枚举和属性赋予相同的名称,这样你就没有这样的代码:publicSaveStatusSaveStatus{get;set;}似乎已接受的答案建议对枚举使用“状态”,对属性使用“状态”:publicSaveStatusSaveState{get;set;}但我认为这很难阅读并且不能立即清楚什么是什么。由于这个枚举命名问题是一个老生常谈的问题,我正在考虑简单地总是用“Enum”作为我的枚举的后缀,所以我会这样:publicSaveStatusEnumSaveStatus{get;set;}SaveStatus=S

c# - Autofac - 自动注册错误 : No constructors can be found with 'Public binding flags'

这是我的Global.asax.cspublicvoidRegisterContainersUsingAutofac(){//http://elegantcode.com/2009/01/07/ioc-libraries-compared///http://www.codeproject.com/Articles/25380/Dependency-Injection-with-Autofac//https://code.google.com/p/autofac///http://api.autofac.org/varbuilder=newContainerBuilder();build

c# - System.BadImageFormatException :Could not load file or assembly … incorrect format when trying to install service with installutil. 可执行文件

我知道我要问duplicate问题,但我的情况完全不同,我认为是因为当我使用程序的nunit工具进行单元测试时,在NUnit中会发生此错误”NewTest.test测试(TestFixtureSetUp):设置:System.BadImageFormatException:无法加载文件或程序集“AUTO_REPAIR,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。试图加载格式不正确的程序。”我想知道为什么这个工具会出现这个错误?我确信我在项目或任何测试用例中都没有错误。请帮帮我。这是这个错误的图片

c# - 对于每个(): Why can't use break/continue inside

既然ForEach()方法循环遍历所有列表成员,为什么我不能使用break/continue子句,而我可以在普通的foreach循环中使用它们lstTemp.ForEach(i=>{if(i==3)break;//dosth});错误:"Noenclosingloopoutofwhichtobreakorcontinue" 最佳答案 因为ForEach是一种方法而不是常规的foreach循环。ForEach方法用于简单任务,如果您需要中断或继续,只需使用常规foreach循环遍历lstTemp。通常,ForEach是这样实现的:pu

c# - 以编程方式将规则添加到 "Windows Firewall with Advanced Security snap-in"?

这个问题在这里已经有了答案:Anywaytoturnthe"internetoff"inwindowsusingc#?(5个答案)关闭5个月前。.NET中是否有任何库可以让我在Windows7中操作具有高级安全性的Windows防火墙?我问这个的原因是,我希望能够以编程方式添加程序/端口异常。例如,我想将program.exe添加到入站规则部分,对于这个程序,我想允许TCP端口5660和UDP端口5660。所有其他端口都应该单独为这个程序阻止;我认为这可以在高级安全Windows防火墙的入站规则部分轻松设置;我希望这是最好的方法?但是,我将如何以编程方式完成它?我已经看过一个例子了he