Wenn ich den Parameter einer Methode überprüfe, werfe ich einen ArgumentNullException
, wenn es null ist. Sehen Sie sich die erste Zeile in der folgenden Methode an. Aber was ist mit Eigenschaften für den Parameter, der nicht null sein sollte? Wenn ich versuche, ihnen die gleiche Art und Weise zu handhaben, erhalte ich einen Code-Analyse-Fehler:Der beste Weg, um Null-Eigenschaften in einem Methodenparameter zu behandeln
CA2208 Instantiate argument exceptions correctly Method 'PriorityDeratingComponentLogic.CreateItem(IvSimulation)' passes 'ivSimulation.SolarPanel' as the 'paramName' argument to a 'ArgumentNullException' constructor. Replace this argument with one of the method's parameter names. Note that the provided parameter name should have the exact casing as declared on the method.
public DeratingComponentBase CreateItem(IvSimulation ivSimulation)
{
if (ivSimulation == null) { throw new ArgumentNullException("ivSimulation"); }
if (ivSimulation.SolarPanel == null) { throw new ArgumentNullException("ivSimulation.SolarPanel"); }
if (ivSimulation.GlobalEquipment == null) { throw new ArgumentNullException("ivSimulation.GlobalEquipment"); }
// ... method body here
}
Sind CA Fehler etwas, das ich unterdrücken soll, oder gibt es eine allgemein akzeptierte Art und Weise, um besser damit zu umgehen? Vielleicht ist das Problem stromaufwärts, und wir sollten nicht einmal nach diesen Eigenschaften suchen müssen, die zu diesem Zeitpunkt null sind.
Ja, diese Codeanalyse Fehlermeldung sieht dumm aus. Das sieht für mich vollkommen in Ordnung aus. Sachen wie dieses ist, warum ich Codeanalyse-Software nie benutzt habe, bevor ... – Jashaszun
'IvSimulation' sollte Konstruktion der ungültigen Werte verhindern, also sollte es' SolarPanel' und 'GlobalEquipment' validieren. – Lee