草庐IT

不可避免

全部标签

c# - 开箱即用地更新 EF 中的子集合真的不可能吗(又名非 hacky 方式)?

假设您的实体中有这些类。publicclassParent{publicintParentID{get;set;}publicvirtualICollectionChildren{get;set;}}publicclassChild{publicintChildID{get;set;}publicintParentID{get;set;}publicvirtualParentParent{get;set;}}并且您有一个用户界面来更新Parent及其Children,这意味着如果用户添加新的Child那么您必须插入,如果用户编辑了一个现有的Child那么你需要更新,如果用户删除了一个C

c# - 哪个 C# 模式具有更好的性能来避免重复的事件处理程序?

基本上有两种模式可以避免重复注册事件处理程序:(根据这个讨论:C#patterntopreventaneventhandlerhookedtwice)使用System.Linq命名空间,并通过调用GetInvocationList().Contains(MyEventHandlerMethod);检查事件处理程序是否已注册注册前先注销,如下:MyEvent-=MyEventHandlerMethod;MyEvent+=MyEventHandlerMethod;我的问题是,就性能而言,哪个更好,或者它们之间在性能上有显着差异吗? 最佳答案

c# - 为什么 FSharpOption 的某些属性(例如 IsSome 和 IsNone)在 C# 中不可见?

在我看来,F#选项类型的某些属性在C#项目中是不可见的。通过检查类型,我或多或少可以看出原因,但我真的不明白到底发生了什么,为什么做出这些选择或者如何最好地规避这个问题。以下是演示该问题的一些片段。我有一个包含两个项目的VS2015解决方案,一个C#项目和一个F#项目。在F#项目中,我有一个定义如下的类:typeFoo()=memberthis.Bar()=Some(1)此外,在F#中我可以这样写:letoption=(newFoo()).Bar()letresult=ifoption.IsNonethen"Isnone"else"Issome"所以看起来选项类型有一个名为IsNone

c# - 我可以避免对很少更改的变量使用锁吗?

我一直在阅读JoeDuffy关于并发编程的书。我有一个关于无锁线程的学术问题。首先:我知道无锁线程充满了危险(如果你不相信我,请阅读书中关于内存模型的部分)不过,我有一个问题:假设我有一个带有int属性的类。这个属性引用的值会被多个线程非常频繁地读取值发生变化的情况极为罕见,当发生变化时,将由单个线程进行更改。如果它确实发生了变化,而另一个使用它的操作正在运行中,没有人会失去一根手指(任何人使用它所做的第一件事就是将它复制到局部变量)我可以使用锁(或readerwriterlockslim来保持读取并发)。我可以将变量标记为volatile(很多例子都是这样做的)但是,即使是volat

c# - System.Web.UI 在控制台应用程序中不可用?

我正在尝试编写一个将数据输出到HTML文件的快速控制台应用程序,但是我无法访问System.Web.UI命名空间。将System.Web添加到我的引用会在解决方案资源管理器中的引用名称顶部放置一个警告图标,并且System.Web在.NET引用列表中不可用(为了让我实际将它添加到我的项目中必须转到对象浏览器并从那里添加它)。有人知道我可能遗漏了什么吗?非常感谢大家! 最佳答案 在VisualStudio2010中,控制台应用程序的默认目标框架是“.NETFramework4-ClientProfile”,它不包括System.Web

c# - 在 Linq-To-Sql 中避免 "Nullable object must have a value."

我有一个这样的方法查询:publicIListGetBusinessObject(Guid?filterId){using(vardb=newL2SDataContext()){varresult=fromboindb.BusinessObjectswhere(filterId.HasValue)?bo.Filter==filterId.value:trueorderbybo.NameselectSqlModelConverters.ConvertBusinessObject(bo);returnresult.ToList();}}在运行时,这会抛出一个System.InvalidOp

c# - 如何避免两个 Controller 操作之间出现 AmbiguousMatchException?

我有两个名称相同但方法签名不同的Controller操作。它们看起来像这样:////GET:/Stationery/5?asHtml=true[AcceptVerbs(HttpVerbs.Get)]publicContentResultShow(intid,boolasHtml){if(!asHtml)RedirectToAction("Show",id);varresult=Stationery.Load(id);returnContent(result.GetHtml());}////GET:/Stationery/5[AcceptVerbs(HttpVerbs.Get)]publ

c# - 如何避免重复的 try catch block

我有几个看起来像这样的方法:publicvoidfoo(){try{doSomething();}catch(Exceptione){Log.Error(e);}}我可以把代码改成这样吗?[LogException()]publicvoidfoo(){doSomething();}如何实现这个自定义属性?这样做的利弊是什么?-----编辑1------------我可以自己实现吗,我的意思是只写一个类,还是我需要使用postsharp或其他解决方案? 最佳答案 您可以使用委托(delegate)和lambda:privatevoid

c# - 在 C# 中从 XML 解析为 JSON 时如何避免 ROOT 元素

我正在尝试使用JSON.NET从xml创建JSONXmlDocumentdocPerson=newXmlDocument();docPerson.LoadXml(xmlPerson);//xmlPersonisthexmlfromaboveJObjectpersonDefinition=JObject.Parse(JsonConvert.SerializeObject(docPerson));Tasks.personDefinition=personDefinition["personDefinition"];输出JSON"person":{"person":[{"personId":

c# - 不可空类型的通用约束

我有以下类(class):publicclassKeyDTO{publicTId{get;set;}}到目前为止一切顺利,但我希望类型参数T是不可为null的类型。我在某处读到这可能是可行的:publicclassKeyDTOwhereT:IComparable,IComparable{publicTId{get;set;}}但是,如果我改变publicTId至publicT?Id,我得到一个编译错误,告诉我T必须是不可空的。如何指定泛型类型参数必须是不可空的?编辑我想完成这个因为我想注释我的Id属性(property)与[Required]属性如下:publicclassKeyDTO