私のアプリケーションから何らかの意味がないようなエラーレポートがいくつか出てきました。私はコードの他の部分から呼び出されるいくつかのパブリックな静的メソッドを持つ静的クラスを持っています。これらのメソッドのほとんどは、XMLドキュメント上に要素を作成します。スタティックメソッドでNULLポインタエラーが発生しました
これらのメソッドのほとんどの最初の行は、XMLドキュメントに要素を作成し、そのように、それを返し、この同じクラスのプライベート静的メソッドの呼び出しです:
private static XmlElement BuildCmd(string name)
{
XmlElement e = OtherClass.NewElement("CMD");
e.SetAttribute("type", name);
return e;
}
public static uint SendFlightReport(FlightData info, AircraftInfo aInfo)
{
XmlElement cmd = BuildCmd("pirep");
....
some other stuff
....
}
生成されたスタック・ダンプ例外的には、BuildCmdを呼び出す行が違反行として報告されます。これは意味をなさない - 静的メソッドを呼び出すときに、どのようにnullポインタ(C#ではオブジェクト参照がオブジェクトのインスタンスに設定されない)を持つことができますか?
EDITは:
public class OtherClass {
private readonly XmlDocument doc = new XmlDocument();
public XmlElement NewElement(string name) {
lock (doc)
return doc.CreateElement(name);
}
}
可能な犯人: 'OtherStaticClass'(多分静的コンストラクタ)または' e'( 'OtherStaticClass.NewElement'の戻り値)。あなたはデバッグを試みましたか? –
「他のもの」を表示してください。私は(悲しいことに、大きな頻度で)生産環境のスタックトレースの行番号がしばしば完全に間違っているという事実と相反する必要がありました。 'BuildCmd(" pirep ")'がNREを投げ捨てるとは思わないことは明らかです。そうではありません。ただし、スタックトレースのメソッド名は決して間違っていません。だからもしそれが本当に 'SendFlightReport'を非難しているのであれば、NREは* defintely *起こっています。方法全体を投稿してください。 –
"OtherStaticClass.NewElement ..."の実装を示すことは貴重だと思います。 – grant