- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一些代码会触发代码分析警告 CA1063:
CA1063 : Microsoft.Design : Remove IDisposable from the list of interfaces implemented by 'Functionality' and override the base class Dispose implementation instead.
但是,我不确定我需要做什么来修复这个警告。
简而言之,我有一个派生自IDisposable
的接口(interface)IFunctionality
。类 Functionality
实现了 IFunctionality
但派生自类 Reusable
以便能够重用 som 代码。 Reusable
类也派生自 IDisposable
。
public class Reusable : IDisposable {
~Reusable() {
Dispose(false);
}
public void Dispose() {
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(Boolean disposing) {
// ...
}
public void DoSomething() {
// ...
}
}
public interface IFunctionality : IDisposable {
void DoSomething();
void DoSomethingElse();
}
public class Functionality : Reusable, IFunctionality {
public void DoSomethingElse() {
// ...
}
#if WORK_AROUND_CA1063
// Removes CA1063
protected override void Dispose(Boolean disposing) {
base.Dispose(disposing);
}
#endif
}
我可以通过覆盖 Functionality
上的 Dispose
并调用基类 Dispose
来消除警告,即使这样做不会改变代码的语义。
那么在这种情况下我是否忽略了有关 IDisposable
的某些内容,或者只是 CA1063 对这个特定的构造失灵了?
我知道我可以抑制 CA1063,但该规则非常宽泛,我不想错过实现此规则报告的 IDisposable
的任何其他问题。
最佳答案
由于规则本身的一个小错误,这是一个误报。当试图弄清楚一个类是否重新实现 IDisposable 时(在弄清楚有一个可以覆盖的基类实现之后),它只查看类的接口(interface)是否包含 IDisposable。不幸的是,显示在程序集元数据中的接口(interface)列表包括接口(interface)的“分解”列表,包括通过类在原始 C# 代码中显式实现的接口(interface)继承的任何接口(interface)。这意味着 FxCop 看到的声明类似于您的 Functionality 类:
public class Functionality : Reusable, IFunctionality, IDisposable
{
...
}
鉴于此元数据表示,ImplementIDisposableCorrectly 规则在尝试确定类是否实际重新实现 IDisposable 方面应该更加智能(例如,如果基类具有一个可重写的 Dispose(bool))。但是,鉴于规则不这样做,您最好的方法是抑制误报。
顺便说一句,我建议认真考虑使用 SuppressMessageAttribute用于抑制误报而不是您当前的条件编译方法。例如:
[SuppressMessage("Microsoft.Design", "CA1063:ImplementIDisposableCorrectly",
Justification = "False positive. IDisposable is inherited via IFunctionality. See http://stackoverflow.com/questions/8925925/code-analysis-ca1063-fires-when-deriving-from-idisposable-and-providing-implemen for details.")]
public class Functionality : Reusable, IFunctionality
{
...
}
此外,您可能需要认真考虑 getting rid of the finalizer ...
关于c# - 代码分析 CA1063 在从 IDisposable 派生并在基类中提供实现时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8925925/
我正在尝试在 Java 中执行此操作,但我认为这是一个一般证书问题。我有一个根CA,一个由根CA颁发的中间CA1,一个由中间CA1颁发的中间CA2,以及一个由中间CA2颁发的证书。 rootCA ->
编辑 1:https://security.stackexchange.com/questions/83972/trust-ca-and-parent-ca-but-not-other-derivat
我正在使用“任何?” block 中的方法。该片段正在字符串中查找字符串“CA”(拆分)检查: region="CA" check="AU,US,UK,CA,ZA" if check.split(',
我有一个SpringBoot应用程序,它使用以下配置与PostgreSQL通信,通过AWS Beanstrik部署:。在我将AWS Aurora证书更新为rds-ca-ecc384-g1之前,一切都很
我们正在使用我们现有的 CA 进行 freeipa 安装。在安装过程中,会生成 CSR,并且必须由 CA 签名才能创建证书。这个证书必须有 X509v3 Basic Constraints: CA:T
我正在尝试导出客户端证书以供网络浏览器使用。 目标是使用 指令限制对管理区域的访问。我看过很多关于使用自签名 CA 的教程。你会如何使用第三方来做到这一点? 1) 如果它是受信任的根 CA,我是否需要
我已经设法弄清楚 x509Certificate2Collection 中的证书是否是证书颁发机构证书,但我如何才能安全地确定它是根证书还是中间证书?以下是否足够安全? var collection
我使用 fabric-ca-sdk(fabric-sdk-java/fabric-sdk-java/src/test/fixture/sdkintegration) 中的测试代码启动 ca 服务器。并
环境: Red Hat Enterprise Linux Server release 7.7 (Maipo) # openssl version OpenSSL 1.0.2g 1 Mar 2016
导出 K8s 集群 CA 证书和 CA 私钥 团队,我有一个 Kubernetes 集群正在运行。我将一次又一次地删除和创建它,所以我想一直重复使用相同的 CA 证书,我需要保存 CA 证书和 key
我正在编写一个自定义客户端和服务器,我想通过公共(public) Internet 安全地进行通信,因此我想使用 OpenSSL 并让两端进行对等验证以确保我的客户端不会被 MITM 误导,同样,未经
问题: 我想构建一个 docker 容器 FROM:ubuntu:20.04但我无法访问外部互联网 我在内部网络上有一个 apt 镜像,可以使用 apt 镜像位于 https 后面,带有自定义证书 我
Linux 的新手,正在尝试了解更多,我遇到了这种情况。 我已经尝试使用 ps 命令并使用 grep 来捕获“ca”,但它会返回每次出现的“ca”,无论它来自什么,它实际上对我没有帮助。 我已经尝试过
我正在尝试在我的 .NET 应用程序和我安装了第三方根 CA 证书和中间 CA 证书的网站之间建立 TLS 连接: ServicePointManager.SecurityProtocol = Sec
SSL 证书永远不会让我眼花缭乱。我有一个网络应用程序,它从合作伙伴那里对另一项服务进行休息调用以获取某些数据。他们使用为公司生成的自签名或内部 CA。问题是每当另一端更新 SSL 证书时,我的应用程
我正在开发一个带有证书固定的移动应用程序。我将在 DMZ 中有一个盒子来代理我的请求。该服务器是否应该拥有来自可信 CA 的证书,还是我可以使用我自己的 CA 生成的证书? 从移动客户端使用受信任的
有没有人设法将 CA 证书安装到 activemq 实例中?我一直在进行谷歌搜索并阅读 activemq 文档,但我没有找到任何关于如何在 activemq 中使用预先存在的 CA 证书的信息。 我假
openssl ca 和 openssl x509 命令有什么区别?我正在使用它来创建和签署我的 root-ca、intermed-ca 和客户端证书,但是 openssl ca 命令不会在证书上注册
在 keystore 中创建私钥和自签名证书 keytool -genkey -alias mydomain -keystore mydomain.ks -dname cn=mydomain.com
我的 Raspberry Pi 3 出了点问题。我不得不运行 fsck.ext3,但是很多包都损坏了,例如 python 等。现在,ca-certificates 不会重新安装。每当它运行 updat
我是一名优秀的程序员,十分优秀!