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

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PrimarySelectionGlyph.cs
- ContentTypeSettingClientMessageFormatter.cs
- HttpListenerContext.cs
- PaperSize.cs
- WindowsRebar.cs
- RuntimeCompatibilityAttribute.cs
- EnterpriseServicesHelper.cs
- EpmSyndicationContentSerializer.cs
- SelectionEditingBehavior.cs
- SqlCharStream.cs
- ZipIOExtraField.cs
- Button.cs
- Control.cs
- NotifyIcon.cs
- MatrixTransform3D.cs
- CustomTypeDescriptor.cs
- MimeMapping.cs
- SessionIDManager.cs
- AutomationPropertyInfo.cs
- PreProcessor.cs
- FileNameEditor.cs
- TreeNode.cs
- SrgsGrammar.cs
- DataGridViewCellCancelEventArgs.cs
- ContainsRowNumberChecker.cs
- TextPattern.cs
- IntSecurity.cs
- SystemDropShadowChrome.cs
- SubMenuStyleCollection.cs
- SerializationSectionGroup.cs
- SchemaCollectionCompiler.cs
- RSACryptoServiceProvider.cs
- RectangleF.cs
- InstanceStoreQueryResult.cs
- Completion.cs
- HandlerFactoryCache.cs
- Pair.cs
- Context.cs
- HttpGetClientProtocol.cs
- ResourcesBuildProvider.cs
- DispatcherExceptionFilterEventArgs.cs
- IpcClientChannel.cs
- Type.cs
- OdbcException.cs
- DependencyPropertyDescriptor.cs
- XmlNode.cs
- TypeSystem.cs
- ResourceDisplayNameAttribute.cs
- SuppressMergeCheckAttribute.cs
- XPathChildIterator.cs
- CodeValidator.cs
- ChangesetResponse.cs
- RuntimeEnvironment.cs
- _LocalDataStore.cs
- DefaultEventAttribute.cs
- CompressStream.cs
- FixedDSBuilder.cs
- WebPartConnectionsDisconnectVerb.cs
- EnumUnknown.cs
- Rss20FeedFormatter.cs
- WebColorConverter.cs
- JournalEntryStack.cs
- DataContext.cs
- AppSettingsExpressionEditor.cs
- ActivityExecutorOperation.cs
- SecurityTokenSerializer.cs
- ComplexTypeEmitter.cs
- SimpleType.cs
- BinaryFormatter.cs
- RectAnimationUsingKeyFrames.cs
- TypeGeneratedEventArgs.cs
- DocumentPageTextView.cs
- UdpDiscoveryEndpointProvider.cs
- DateTimeConstantAttribute.cs
- ProfilePropertySettings.cs
- AnnotationHighlightLayer.cs
- Visual.cs
- ParagraphResult.cs
- unitconverter.cs
- NumericUpDown.cs
- HttpClientCertificate.cs
- ColorAnimation.cs
- BuildProviderCollection.cs
- TcpChannelListener.cs
- InvalidateEvent.cs
- ConstructorBuilder.cs
- Matrix3DStack.cs
- AdCreatedEventArgs.cs
- DbConnectionInternal.cs
- NamespaceMapping.cs
- xmlglyphRunInfo.cs
- ComponentCommands.cs
- ListItemParagraph.cs
- SoapExtensionTypeElement.cs
- RoleManagerSection.cs
- ElementUtil.cs
- HttpServerUtilityBase.cs
- ElementUtil.cs
- ActivityBuilderHelper.cs
- control.ime.cs