private void WriteCore()

in src/StructuredLogger/BinaryLogger/BuildEventArgsWriter.cs [174:204]


        private void WriteCore(BuildEventArgs e)
        {
            switch (e)
            {
                case BuildMessageEventArgs buildMessage: Write(buildMessage); break;
                case TaskStartedEventArgs taskStarted: Write(taskStarted); break;
                case TaskFinishedEventArgs taskFinished: Write(taskFinished); break;
                case TargetStartedEventArgs targetStarted: Write(targetStarted); break;
                case TargetFinishedEventArgs targetFinished: Write(targetFinished); break;
                case BuildErrorEventArgs buildError: Write(buildError); break;
                case BuildWarningEventArgs buildWarning: Write(buildWarning); break;
                case ProjectStartedEventArgs projectStarted: Write(projectStarted); break;
                case ProjectFinishedEventArgs projectFinished: Write(projectFinished); break;
                case BuildStartedEventArgs buildStarted: Write(buildStarted); break;
                case BuildFinishedEventArgs buildFinished: Write(buildFinished); break;
                case ProjectEvaluationStartedEventArgs projectEvaluationStarted: Write(projectEvaluationStarted); break;
                case ProjectEvaluationFinishedEventArgs projectEvaluationFinished: Write(projectEvaluationFinished); break;
                default:
                    // convert all unrecognized objects to message
                    // and just preserve the message
                    var buildMessageEventArgs = new BuildMessageEventArgs(
                        e.Message,
                        e.HelpKeyword,
                        e.SenderName,
                        MessageImportance.Normal,
                        e.Timestamp);
                    buildMessageEventArgs.BuildEventContext = e.BuildEventContext ?? BuildEventContext.Invalid;
                    Write(buildMessageEventArgs);
                    break;
            }
        }