Bunu yazarken, soruyu yazarken anladım. Aşağıda cevap yazacak.Kod Analizi Uyarı CA2213 - Call Dispose() IDisposable destek alanında
aşağıdaki VS Kod Analizi ile uyarı alma: 'SqlConnection': CA2213 'DBConn' ıdisposable tiptedir alanını 'DBConn.k__BackingField' içeriyor Uyarı
. Bu alana At'ı veya Kapat'ı çağırmak için 'DBConn' üzerindeki Atma yöntemini değiştirin.
Ama benim kod DBConn mülkiyet çağrı Dispose() yapar. Arka alanda değil mi? Bunun gibi başka örneklere sahibim - derleyicinin bu uyarıyı atmadığı yerde imha ediyorum. Bir set
erişimci, oldu salt okunur olmadığı için,
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();
}
}
}
Hangi C# sürümünü kullanıyorsunuz? Otomatik özellikler için bir ayarlayıcı sağlamanız gerektiğinden C# 6'dan önce bir _different_ derleyici uyarısı alırsınız. –
Bu, [bilinen bir hata] (https://connect.microsoft.com/VisualStudio/feedback/details/1798055/code-analysis-rule-ca2213-disposablefueshouldbedis-doesnt-understand-read-only-auto-properties-being FxCop içinde gelecekteki sürümde sabitlenecektir. –