public void WriteEvent(Object sender, ParserEventArgs e) { if(e.Level >= myEventLevel){ Console.Write("[{0}] ", e.Level); Console.Write("({0}) ", e.Message.GetType().Name); if(!string.IsNullOrEmpty(e.Message.Message)) Console.WriteLine(e.Message.Message); if(sender is RedFaceParser && e.Level > EventLevel.Information){ if(e.OriginalSender != null){ Console.WriteLine(" {0}:", e.OriginalSender.GetType().Name); } RedFaceParser parser = (RedFaceParser)sender; Console.Write(" {0}", parser.InputStream.GetRecentString(40)); string allstr = parser.InputStream.GetAllString(); string[] lines = allstr.Split('\n'); Console.Write(" ({0}行目", lines.Length); Console.Write(" {0}文字目)", lines[lines.Length-1].Length); Console.WriteLine(); } } }
// イベントを発生します。 protected virtual void OnParserEventRaised(ParserEventArgs e) { OnParserEventRaised(this, e); }
protected virtual void OnParserEventRaised(Object sender, ParserEventArgs e) { if(ParserEventRaised != null){ ParserEventRaised(this, e); } }
// ParserMessageオブジェクトを指定して、メッセージを通知します。 protected virtual void OnMessageRaised(ParserMessage message) { ParserEventArgs args = new ParserEventArgs(message); OnParserEventRaised(args); }