gpt4 book ai didi

c# - 代码分析警告 CA2213 - 在 IDisposable 支持字段上调用 ​​Dispose()

转载 作者:可可西里 更新时间:2023-11-01 03:14:17 25 4
gpt4 key购买 nike

想发布这个,即使我在写问题时想通了。将在下面发布答案。

使用 VS 代码分析获取以下警告:

Warning CA2213 'DBConn' contains field 'DBConn.k__BackingField' that is of IDisposable type: 'SqlConnection'. Change the Dispose method on 'DBConn' to call Dispose or Close on this field.

但是我的代码确实在 DBConn 属性上调用了 Dispose()。它不在后台吗?我还有其他类似的实例 - 我正在处理编译器不会抛出此警告的地方。这是下面的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;

namespace TheProgramSpace
{
public sealed class DBConn : IDisposable
{
// class containing the database and its connection
public SqlConnection TheConn { get; }
public string DbPath { get; }
public string DbName { get; }


public DBConn(ProgInstance FPI)
{
// constructs new SQLConnection
DbPath = FPI.dbPath;
DbName = FPI.dbName;

string connString = "Data Source = " + DbPath + "; Initial Catalog =" + DbName + "; Integrated Security = True; "
+ "Connect Timeout = 30; Encrypt = False; TrustServerCertificate = False; "
+ "ApplicationIntent = ReadWrite; MultiSubnetFailover = False";

TheConn = new SqlConnection(connString);

}

public void Dispose()
{
TheConn.Dispose();
}
}
}

最佳答案

您的代码没有问题。 Dispose 在底层支持字段上调用。这是 known bug在 FxCop 中,随着 C# 6 中引入的“getter-only”自动属性的引入而浮出水面。现在,您可以 suppress the warning使用类上的属性或忽略它,直到它在 FxCop 中得到修复。

关于c# - 代码分析警告 CA2213 - 在 IDisposable 支持字段上调用 ​​Dispose(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34583417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com