ClassValidator.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / XamlBuildTask / Microsoft / Build / Tasks / Xaml / ClassValidator.cs / 1305376 / ClassValidator.cs

                            //------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------

namespace Microsoft.Build.Tasks.Xaml 
{
    using System.Collections.Generic; 
    using System.Diagnostics; 
    using System.Xaml;
    using System.Runtime; 
    using System.Reflection;
    using System;
    using System.Xaml.Schema;
 
    class ClassValidator
    { 
        string xamlFileName; 
        IExceptionLogger buildLogger;
        IList eventArgs; 
        Assembly localAssembly;
        string rootNamespace;

        public ClassValidator(IExceptionLogger buildLogger, string xamlFileName, Assembly localAssembly, string rootNamespace) 
        {
            this.buildLogger = buildLogger; 
            this.xamlFileName = xamlFileName; 
            this.localAssembly = localAssembly;
            this.eventArgs = null; 
            this.rootNamespace = rootNamespace;
        }

        public bool ValidateXaml(XamlReader xamlReader, bool failOnFirstError, string assemblyName, out IList validationErrors) 
        {
            if (xamlReader == null) 
            { 
                throw FxTrace.Exception.ArgumentNull("xamlReader");
            } 
            validationErrors = null;

            // We loop through the provided XAML using a XamlValidatingReader to ensure that:
            //  1. XAML is valid. 
            //  2. All types referenced in XAML are validate-able. At this point, any types defined in the local
            //     assembly should be referenced, so this should be possible. 
            XamlValidatingReader reader = new XamlValidatingReader(xamlReader, this.localAssembly, rootNamespace, assemblyName); 
            reader.OnValidationError += new EventHandler(reader_OnValidationError);
            while (reader.Read()) 
            {
                if (this.eventArgs != null && failOnFirstError)
                {
                    validationErrors = this.eventArgs; 
                    return false;
                } 
            } 

            validationErrors = this.eventArgs; 
            if (validationErrors != null && validationErrors.Count > 0)
            {
                return false;
            } 
            return true;
        } 
 
        void reader_OnValidationError(object sender, ValidationEventArgs e)
        { 
            if (this.eventArgs == null)
            {
                this.eventArgs = new List();
            } 

            this.eventArgs.Add(new LogData() 
            { 
                FileName = this.xamlFileName,
                LineNumber = e.LineNumber, 
                LinePosition = e.LinePosition,
                Message = e.Message
            });
        } 
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK