Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / Documents / ValidationHelper.cs / 1 / ValidationHelper.cs
//---------------------------------------------------------------------------- // // File: ValidationHelper.cs // // Copyright (C) Microsoft Corporation. All rights reserved. // // Description: Helpers for TOM parameter validation. // //--------------------------------------------------------------------------- namespace System.Windows.Documents { using MS.Internal; // Invariant.Assert using System.ComponentModel; using System.Windows; using System.Windows.Media; internal static class ValidationHelper { //----------------------------------------------------- // // Internal Methods // //----------------------------------------------------- #region Internal Methods // Verifies a TextPointer is non-null and // is associated with a given TextContainer. // // Throws an appropriate exception if a test fails. internal static void VerifyPosition(ITextContainer tree, ITextPointer position) { VerifyPosition(tree, position, "position"); } // Verifies a TextPointer is non-null and is associated with a given TextContainer. // // Throws an appropriate exception if a test fails. internal static void VerifyPosition(ITextContainer container, ITextPointer position, string paramName) { if (position == null) { throw new ArgumentNullException(paramName); } if (position.TextContainer != container) { throw new ArgumentException(SR.Get(SRID.NotInAssociatedTree, paramName)); } } // Verifies two positions are safe to use as a logical text span. // // Throws ArgumentNullException if startPosition == null || endPosition == null // ArgumentException if startPosition.TextContainer != endPosition.TextContainer or // startPosition > endPosition internal static void VerifyPositionPair(ITextPointer startPosition, ITextPointer endPosition) { if (startPosition == null) { throw new ArgumentNullException("startPosition"); } if (endPosition == null) { throw new ArgumentNullException("endPosition"); } if (startPosition.TextContainer != endPosition.TextContainer) { throw new ArgumentException(SR.Get(SRID.InDifferentTextContainers, "startPosition", "endPosition")); } if (startPosition.CompareTo(endPosition) > 0) { throw new ArgumentException(SR.Get(SRID.BadTextPositionOrder, "startPosition", "endPosition")); } } // Throws an ArgumentException if direction is not a valid enum. internal static void VerifyDirection(LogicalDirection direction, string argumentName) { if (direction != LogicalDirection.Forward && direction != LogicalDirection.Backward) { throw new InvalidEnumArgumentException(argumentName, (int)direction, typeof(LogicalDirection)); } } // Throws an ArgumentException if edge is not a valid enum. internal static void VerifyElementEdge(ElementEdge edge, string param) { if (edge != ElementEdge.BeforeStart && edge != ElementEdge.AfterStart && edge != ElementEdge.BeforeEnd && edge != ElementEdge.AfterEnd) { throw new InvalidEnumArgumentException(param, (int)edge, typeof(ElementEdge)); } } // ............................................................... // // TextSchema Validation // // ............................................................... // Checks whether it is valid to insert the child object at passed position. internal static void ValidateChild(TextPointer position, object child, string paramName) { Invariant.Assert(position != null); Invariant.Assert(position.Parent != null); if (child == null) { throw new ArgumentNullException(paramName); } if (!TextSchema.IsValidChild(/*position:*/position, /*childType:*/child.GetType())) { throw new ArgumentException(SR.Get(SRID.TextSchema_ChildTypeIsInvalid, position.Parent.GetType().Name, child.GetType().Name)); } // The new child should not be currently in other text tree if (child is TextElement) { if (((TextElement)child).Parent != null) { throw new ArgumentException(SR.Get(SRID.TextSchema_TheChildElementBelongsToAnotherTreeAlready, child.GetType().Name)); } } else { Invariant.Assert(child is UIElement); // Cannot call UIElement.Parent across assembly boundary. So skip this part of validation. This condition will be checked elsewhere anyway. //if (((UIElement)child).Parent != null) //{ // throw new ArgumentException(SR.Get(SRID.TextSchema_TheChildElementBelongsToAnotherTreeAlready, child.GetType().Name)); //} } } #endregion Internal methods } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TrimSurroundingWhitespaceAttribute.cs
- DataRow.cs
- CreateUserWizardStep.cs
- ZoneButton.cs
- HttpModuleCollection.cs
- ComponentCollection.cs
- Blend.cs
- ActivityExecutorOperation.cs
- TaskForm.cs
- ToolStripRenderEventArgs.cs
- EdmMember.cs
- CompositeCollection.cs
- FileChangesMonitor.cs
- ParseChildrenAsPropertiesAttribute.cs
- ValidationEventArgs.cs
- TextServicesManager.cs
- SplineQuaternionKeyFrame.cs
- DataList.cs
- RTLAwareMessageBox.cs
- ScriptBehaviorDescriptor.cs
- EventProvider.cs
- TextBoxAutomationPeer.cs
- SimpleWorkerRequest.cs
- XmlRawWriter.cs
- XmlSchemaAll.cs
- ExpressionVisitor.cs
- TextRange.cs
- RuleSetDialog.Designer.cs
- CodeAttachEventStatement.cs
- XhtmlBasicTextBoxAdapter.cs
- FlowPosition.cs
- NumberSubstitution.cs
- PageThemeParser.cs
- Int16.cs
- OleDbDataReader.cs
- printdlgexmarshaler.cs
- DecimalStorage.cs
- SchemaElement.cs
- UrlMappingsModule.cs
- RelationshipDetailsCollection.cs
- CharacterString.cs
- TextRangeEditTables.cs
- SecurityListenerSettingsLifetimeManager.cs
- XPathException.cs
- basenumberconverter.cs
- ProcessInfo.cs
- QuaternionAnimation.cs
- BindUriHelper.cs
- InstalledFontCollection.cs
- AutoResizedEvent.cs
- HtmlMeta.cs
- DataColumnChangeEvent.cs
- PartManifestEntry.cs
- HMACMD5.cs
- TemplateLookupAction.cs
- XmlNode.cs
- AssignDesigner.xaml.cs
- ScrollBar.cs
- ButtonRenderer.cs
- SizeFConverter.cs
- WebColorConverter.cs
- WindowsMenu.cs
- AnimationException.cs
- ResourceReferenceExpressionConverter.cs
- RSACryptoServiceProvider.cs
- TemplateBindingExtension.cs
- CryptoHelper.cs
- AbsoluteQuery.cs
- StreamAsIStream.cs
- InternalResources.cs
- EnumBuilder.cs
- ServiceControllerDesigner.cs
- UnsafeMethods.cs
- ErrorWrapper.cs
- ThemeDirectoryCompiler.cs
- SemanticAnalyzer.cs
- RoleServiceManager.cs
- RuleProcessor.cs
- BindingWorker.cs
- EpmHelper.cs
- DescendentsWalker.cs
- RangeValidator.cs
- SoapAttributeAttribute.cs
- WebServiceFaultDesigner.cs
- AccessControlEntry.cs
- DeclarativeCatalogPartDesigner.cs
- GetRecipientListRequest.cs
- KoreanCalendar.cs
- ImageAnimator.cs
- XmlTextAttribute.cs
- sqlmetadatafactory.cs
- MergeFailedEvent.cs
- UrlAuthorizationModule.cs
- WebBrowserNavigatedEventHandler.cs
- DbConnectionPoolOptions.cs
- XmlRawWriter.cs
- ComponentDispatcherThread.cs
- Composition.cs
- WebEventTraceProvider.cs
- DictionaryEntry.cs