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
- PropertyMappingExceptionEventArgs.cs
- CircleEase.cs
- MailBnfHelper.cs
- ListViewItemMouseHoverEvent.cs
- RenderDataDrawingContext.cs
- DataRecordObjectView.cs
- InkPresenter.cs
- DataGridViewRowsRemovedEventArgs.cs
- ComponentDispatcherThread.cs
- DataTemplate.cs
- AuthorizationRuleCollection.cs
- EventDescriptorCollection.cs
- ComplexLine.cs
- CompositeScriptReferenceEventArgs.cs
- Exceptions.cs
- ExpressionLexer.cs
- ToolStripItemDesigner.cs
- DataSourceControl.cs
- Transaction.cs
- _SpnDictionary.cs
- TimelineGroup.cs
- ViewgenContext.cs
- Style.cs
- Variable.cs
- PrintEvent.cs
- EventListener.cs
- ListViewInsertedEventArgs.cs
- MessageBox.cs
- SqlCachedBuffer.cs
- TextTreeInsertElementUndoUnit.cs
- ExchangeUtilities.cs
- TagPrefixAttribute.cs
- TypeNameConverter.cs
- MenuCommands.cs
- TransformerInfoCollection.cs
- TrackPointCollection.cs
- MaskedTextProvider.cs
- RuntimeIdentifierPropertyAttribute.cs
- InputLanguageCollection.cs
- OdbcReferenceCollection.cs
- DataKey.cs
- CodeTypeMember.cs
- CompiledQueryCacheKey.cs
- AvTraceDetails.cs
- BrowserCapabilitiesFactory.cs
- TableRow.cs
- BitStack.cs
- IncomingWebRequestContext.cs
- BufferModesCollection.cs
- HttpApplication.cs
- SqlBuilder.cs
- EventDescriptorCollection.cs
- CollectionChangeEventArgs.cs
- LayoutDump.cs
- ArgIterator.cs
- Vector3DKeyFrameCollection.cs
- BypassElementCollection.cs
- RuleDefinitions.cs
- ContentElement.cs
- UserControlParser.cs
- RuntimeConfigurationRecord.cs
- InputGestureCollection.cs
- LinkTarget.cs
- ListBoxDesigner.cs
- PersonalizationStateInfoCollection.cs
- CompoundFileDeflateTransform.cs
- Binding.cs
- GPStream.cs
- VSDExceptions.cs
- EventRoute.cs
- File.cs
- DeobfuscatingStream.cs
- PeerNodeAddress.cs
- TextTabProperties.cs
- WinEventQueueItem.cs
- Validator.cs
- SamlAction.cs
- References.cs
- TemporaryBitmapFile.cs
- DocumentEventArgs.cs
- RectangleConverter.cs
- WebServiceData.cs
- userdatakeys.cs
- RectValueSerializer.cs
- ExpressionBindings.cs
- ItemType.cs
- MessageBox.cs
- ConnectionPointConverter.cs
- DocumentOrderComparer.cs
- ServiceOperationListItemList.cs
- BuildProviderCollection.cs
- ComponentManagerBroker.cs
- PersonalizationEntry.cs
- ChangePassword.cs
- EntityParameterCollection.cs
- CheckPair.cs
- ClearCollection.cs
- InheritedPropertyChangedEventArgs.cs
- ResourceReferenceKeyNotFoundException.cs
- SchemaTypeEmitter.cs