private void WriteAttributes()

in src/StructuredLogger/Serialization/Binary/BuildLogWriter.cs [54:173]


        private void WriteAttributes(BaseNode node)
        {
            var metadata = node as Metadata;
            if (metadata != null)
            {
                SetString(nameof(Metadata.Name), metadata.Name);
                SetString(nameof(Metadata.Value), metadata.Value);
                return;
            }

            var property = node as Property;
            if (property != null)
            {
                SetString(nameof(Property.Name), property.Name);
                SetString(nameof(Property.Value), property.Value);
                return;
            }

            var message = node as Message;
            if (message != null)
            {
                SetString(nameof(Message.IsLowRelevance), message.IsLowRelevance.ToString());
                SetString(nameof(Message.Timestamp), ToString(message.Timestamp));
                SetString(nameof(Message.Text), message.Text);
                return;
            }

            var folder = node as Folder;
            if (folder != null)
            {
                SetString(nameof(Folder.IsLowRelevance), folder.IsLowRelevance.ToString());
                return;
            }

            var namedNode = node as NamedNode;
            if (namedNode != null)
            {
                SetString(nameof(NamedNode.Name), namedNode.Name?.Replace("\"", ""));
            }

            var textNode = node as TextNode;
            if (textNode != null)
            {
                SetString(nameof(TextNode.Text), textNode.Text);
            }

            if (node is TimedNode timedNode)
            {
                AddStartAndEndTime(timedNode);
                SetString(nameof(TimedNode.NodeId), timedNode.NodeId.ToString());
            }

            var task = node as Task;
            if (task != null)
            {
                SetString(nameof(Task.FromAssembly), task.FromAssembly);
                SetString(nameof(Task.CommandLineArguments), task.CommandLineArguments);
                SetString(nameof(Task.SourceFilePath), task.SourceFilePath);
                return;
            }

            var target = node as Target;
            if (target != null)
            {
                SetString(nameof(Target.DependsOnTargets), target.DependsOnTargets);
                SetString(nameof(Target.IsLowRelevance), target.IsLowRelevance.ToString());
                SetString(nameof(Target.SourceFilePath), target.SourceFilePath);
                return;
            }

            var diagnostic = node as AbstractDiagnostic;
            if (diagnostic != null)
            {
                SetString(nameof(AbstractDiagnostic.Code), diagnostic.Code);
                SetString(nameof(AbstractDiagnostic.File), diagnostic.File);
                SetString(nameof(AbstractDiagnostic.LineNumber), diagnostic.LineNumber.ToString());
                SetString(nameof(AbstractDiagnostic.ColumnNumber), diagnostic.ColumnNumber.ToString());
                SetString(nameof(AbstractDiagnostic.EndLineNumber), diagnostic.EndLineNumber.ToString());
                SetString(nameof(AbstractDiagnostic.EndColumnNumber), diagnostic.EndColumnNumber.ToString());
                SetString(nameof(AbstractDiagnostic.ProjectFile), diagnostic.ProjectFile);
                return;
            }

            var project = node as Project;
            if (project != null)
            {
                SetString(nameof(Project.ProjectFile), project.ProjectFile);
                return;
            }

            var build = node as Build;
            if (build != null)
            {
                SetString(nameof(Build.Succeeded), build.Succeeded.ToString());
                SetString(nameof(Build.IsAnalyzed), build.IsAnalyzed.ToString());
                return;
            }

            var import = node as Import;
            if (import != null)
            {
                SetString(nameof(Import.ProjectFilePath), import.ProjectFilePath);
                SetString(nameof(Import.ImportedProjectFilePath), import.ImportedProjectFilePath);
                SetString(nameof(Import.Line), import.Line.ToString());
                SetString(nameof(Import.Column), import.Column.ToString());
                SetString(nameof(Import.IsLowRelevance), import.IsLowRelevance.ToString());
                return;
            }

            var noImport = node as NoImport;
            if (noImport != null)
            {
                SetString(nameof(Import.ProjectFilePath), noImport.ProjectFilePath);
                SetString(nameof(Import.ImportedProjectFilePath), noImport.ImportedFileSpec);
                SetString(nameof(Import.Line), noImport.Line.ToString());
                SetString(nameof(Import.Column), noImport.Column.ToString());
                SetString(nameof(Import.IsLowRelevance), noImport.IsLowRelevance.ToString());
                return;
            }
        }