J'essaie de respecter les règles d'analyse de code VS2005 pour un nouveau projet. J'ai cette méthode:Analyse de code VS2005: CA1063 (appelez disposer (true) et supress finaliser) - avec journalisation
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 l'exploitation forestière pour éliminer certains de nos types).
Le presense de la ligne de débogage de la console déclenche cette erreur:
Erreur 1 CA1063: Microsoft.Design: Modifier PerfectDisposableClass.Dispose(): Void pour qu'il appelle Dispose (vrai), puis appelle GC. SuppressFinalize sur l'instance d'objet actuelle ('this' ou 'Me' dans VB), puis retourne. F: \ Visual Studio 2005 \ Projects \ DisposeAndFinalize \ DisposeAndFinalize \ PerfectDisposableClass.cs 26 DisposeAndFinalize
Sans recourir à des directives pragma est-il un moyen de contourner cela? Peut-être écrire mes propres règles? En outre, aér les règles existantes dans un assemblage quelque part je peux regarder avec le réflecteur?
Des réponses simples sont toujours les meilleurs! J'ai eu des appels de log dans mon Dispose(), Dispose (bool) et le finaliseur. Pas besoin des appels de log dans Dispose() ou le finaliseur, je peux simplement les ajouter à Dispose (bool) comme vous l'avez suggéré, merci. – ng5000
Avez-vous une idée de la protection de la méthode Dispose (bool)? Dans ce cas, je voudrais que la Console.WriteLine soit appelée avant chaque élimination, alors nous aurions toujours besoin que le code soit ce qu'il est dans le message d'origine, et cela casserait toujours CA1063. – Karata