Warnung aufgrund von Ausnahmeklassen: CA2237: Markieren Sie ISerializable-Typen mit SerializableAttribute

8

Ich habe mehrere Klassen aus verschiedenen Ausnahmen abgeleitet. Jetzt vs gibt Warnung wie im Titel dieser Frage.

1.Könnte jemand erklären, welche Auswirkungen die Unterdrückung dieser Regel hat?

2.Könnten Sie die Regel aus hier " Keine Warnung aus dieser Regel für Ausnahmeklassen unterdrücken, da sie serialisierbar sein müssen, damit sie über Anwendungsdomänen hinweg ordnungsgemäß funktionieren. "?

Danke.

P.S. Nun, ich habe selbst eine Antwort. Sie müssen Ausnahmen als serialisierbar markieren. Sie funktionieren ohne dieses Attribut in derselben AppDomain einwandfrei. Wenn Sie jedoch versuchen, es von einer anderen Domäne abzufangen, muss es serialisiert werden, um App-Grenzen zu überwinden. Und das ist der Hauptgrund, den ich dafür gefunden habe.

    
Nickolodeon 04.07.2012, 10:38
quelle

2 Antworten

12

Dies ist nicht unbedingt eine Visual Studio-Warnung, es handelt sich um eine Warnung, die vom FxCop-Tool ausgegeben wird. Welche können Sie aus dem VS Analyze-Menü ausführen. FxCop ist ein statischer Analysator, der nach allgemeinen Fehlern in einem .NET-Programm sucht, das ein Compiler nicht kennzeichnet. Die meisten seiner Warnungen sind ziemlich dunkel und sind selten wirklich ernsthafte Probleme, Sie müssen es als "Haben Sie daran gedacht?" Art von Werkzeug.

Der kleine Faktor, an den Sie sich erinnern möchten, ist, dass die Exception-Klasse ISerializable implementiert und das [Serializable] -Attribut hat. Das ist eine ziemlich harte Anforderung, es macht das Basis-Exception-Objekt über App-Domains serialisierbar. Notwendig, weil die Ausnahme nicht von MarshalByRefObject abgeleitet ist. Außerdem müssen Sie zulassen, dass Code, der in einer anderen App-Domäne ausgeführt wird, Ausnahmen auslöst, die Sie abfangen können.

So bemerkt FxCop, dass Sie das nicht für Ihre eigene Exception-abgeleitete Klasse getan haben. Das ist wirklich nur ein Problem, wenn Sie jemals Code haben wollen, der Ihre Exception in einer anderen App-Domain auslöst. FxCop ist ansonsten nicht schlau genug, um zu wissen, ob Sie es tun, es kann Sie nur daran erinnern, dass es schief geht, wenn Sie es tun. Es ist ziemlich ungewöhnlich, also kannst du die Warnung ignorieren, wenn du noch nicht weißt, ob du es willst oder nicht oder ob es für dich alles wie Chinesisch klingt.

    
Hans Passant 04.07.2012, 14:35
quelle
0

Wenn Sie in Ihrer Anwendung nicht mehrere Anwendungsdomänen verwenden, können Sie sie ignorieren oder unterdrücken.

    
abatishchev 04.07.2012 10:43
quelle