考虑下面的代码,它触发了CA2104:Donotdeclarereadonlymutablereferencetypes.publicclassTest{//ThisprovokesCA2104:"Donotdeclarereadonlymutablereferencetypes".protectedreadonlyImmutableClassImmutableMember;}publicclassImmutableClass{}有谁知道以一种可以抑制警告CA2104的方式将类标记为不可变的方法吗?我尝试用[ImmutableObject(true)]装饰MutableClass没有成
框架设计指南(第2版,第327页)说:CONSIDERprovidingmethodClose(),inadditiontotheDispose(),ifcloseisstandardterminologyinthearea.Whendoingso,itisimportantthatyoumaketheCloseimplementationidenticaltoDisposeandconsiderimplementingIDisposable.Disposemethodexplicitly.所以,按照提供的示例,我得到了这个类:publicclassSomeClass:IDisposa
我以前遇到过这个FxCop规则,但对如何解决违规问题并不满意(thread1、thread2)。我现在有另一个案例,我需要纠正违反CA1819的行为亲切。具体来说,我有一个算法库,它使用如下所示的公共(public)“输入对象”对曲线(x,y)执行一些分析计算:publicclassInputObject{publicdouble[]X{get;set;}publicdouble[]Y{get;set;}//+lotsofotherthingswell}此对象的X和Y属性在库中的数百个位置使用,通常使用索引。输入对象永远不会被算法改变,但实际上如果是这样也无关紧要。另外,.Length
我有一个接口(interface)的实现,该接口(interface)扩展了IDisposable。在我的特定接口(interface)实现中,我不需要处理任何东西,所以我只有一个空的Dispose()方法。publicinterfaceIMyStuff:IDisposable{}publicMyStuffImpl:IMyStuff{publicvoidDispose(){}}现在在FxCop中,这会导致CA1063:Error,Certainty95,forImplementIDisposableCorrectly{Resolution:"Provideanoverridableim
有人要我使其他人的代码符合某些FxCop规则集,其中包括规则CA1726:Usepreferredterms.大多数术语/替换都是正确的,我可以理解必须决定一种命名方式。但是,“标志”一词有什么用呢?任何人都可以向我解释为什么我不使用这个名字吗?(在我去向老板提示之前;))比如说,我有一个数据对象,它有一个类“flags”的成员,它捆绑了大量定义如何处理数据对象的属性。你还能怎么调用它? 最佳答案 FrameworkDesignGuidelines这本书是FxCop的基础,作者说使用Flag或Flags是不好的主意。他们的替代建议是
好的,这是我需要做的:我的应用程序是用C#(.NETFramework4.5)编写的,需要通过HTTPS与我们的服务器通信。我们的服务器使用我们自己的Root-CA颁发的TLS/SSL证书。该Root-CA虽然完全受我的应用程序信任,但未安装在系统的“受信任的根”证书库中。因此,如果没有进一步的工作,C#将拒绝联系服务器,因为无法验证服务器的证书-正如预期的那样。注意:我们不能使用系统中已经安装的Root-CA。我该怎么做才能让我的应用程序(安全地)联系我们的服务器?我知道C#提供了将我们的Root-CA证书作为“受信任的根”安装到系统证书库中的类。这不是我们想要做的!那是因为(a)它
我有一个工厂方法可以构建实现IDisposable的对象。最终是调用者管理所创建对象的生命周期。这个设计触发了一堆CA2000errors.我的设计中是否存在根本性错误,是否需要重构,或者只是对静态代码分析警告过于兴奋?工厂方法publicstaticDisposableTypeBuildTheDisposableType(stringparam1,intparam2){vartheDisposable=newDisposableType();//DosomeworktosetuptheDisposablereturntheDisposable}来电者using(vardt=Facto
我在我们的项目中使用静态代码分析来检查代码违规情况。广泛使用的规则之一是CA2213,它检查一次性字段的正确处理。我注意到CA2213不检查自动实现属性的处理。此外,如果类继承自实现IDisposable的类且未重写Dispose方法,则CA2213既不检查字段也不检查自动实现的属性的处置。实例:publicsealedclassGood:IDisposable{privateFontfont;publicFontFont{get{returnfont;}set{font=value;}}publicGood(){font=newFont("Arial",9);}publicvoidD
以下代码生成两个CA2000警告(以及其他警告,但这不是重点)。publicsealedclassItem:IDisposable{publicvoidDispose(){}}publicsealedclassItemContainer{publicvoidAdd(Itemitem){}}publicsealedclassTest:IDisposable{privateICollectionitemCollection;privateItemContaineritemContainer;privatevoidAdd(Itemitem){itemCollection.Add(item);
想发布这个,即使我在写问题时想通了。将在下面发布答案。使用VS代码分析获取以下警告:WarningCA2213'DBConn'containsfield'DBConn.k__BackingField'thatisofIDisposabletype:'SqlConnection'.ChangetheDisposemethodon'DBConn'tocallDisposeorCloseonthisfield.但是我的代码确实在DBConn属性上调用了Dispose()。它不在后台吗?我还有其他类似的实例-我正在处理编译器不会抛出此警告的地方。这是下面的代码:usingSystem;usin