Analyse de code VS2005: CA1063 (appel dispos (vrai) et supprime finaliser) - avec enregistrement
-
19-08-2019 - |
Question
J'essaie de respecter les règles d'analyse de code VS2005 pour un nouveau projet. J'ai cette méthode:
public void Dispose()
{
Console.WriteLine("Dispose() called");
Dispose( true );
GC.SuppressFinalize(this);
}
(L'appel de la console deviendra un appel log4net à un moment donné, et nous sommes toujours intéressés par la journalisation pour certains de nos types.)
La présence de la ligne de débogage de la console déclenche cette erreur:
Erreur 1 CA1063: Microsoft.Design: Modifier PerfectDisposableClass.Dispose (): Nul afin d’appeler Dispose (true), puis d’appeler GC.SuppressFinalize sur l’instance d’objet actuelle ('this' ou 'Me' dans VB), puis revient. F: \ Visual Studio 2005 \ Projects \ DisposeAndFinalize \ DisposeAndFinalize \ PerfectDisposableClass.cs 26 DisposeAndFinalize
Sans recourir aux directives du pragma, y ??a-t-il un moyen de contourner cela? Peut-être écrire mes propres règles? En outre, après avoir lu les règles existantes dans un assemblage, je peux regarder avec un réflecteur?
La solution
Vous pouvez insérer l'instruction log dans la méthode Dispose (méthode d'élimination) pour respecter les consignes suivantes:
public void Dispose(bool disposing)
{
if (disposing)
{
Console.WriteLine("...");
}
...
}