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
- ControlBuilderAttribute.cs
- UnsafeMethods.cs
- PeerReferralPolicy.cs
- StructuralObject.cs
- PlatformCulture.cs
- NetDataContractSerializer.cs
- Size.cs
- XmlNodeChangedEventArgs.cs
- XmlAttributeAttribute.cs
- StackOverflowException.cs
- ModelItemDictionary.cs
- DataGridViewColumnStateChangedEventArgs.cs
- Int16AnimationUsingKeyFrames.cs
- CreateRefExpr.cs
- ConfigurationValues.cs
- ObjectDataSourceSelectingEventArgs.cs
- Table.cs
- TextEditorSpelling.cs
- RightsManagementPermission.cs
- MouseBinding.cs
- SQLByteStorage.cs
- WmlLinkAdapter.cs
- RadioButtonList.cs
- VScrollBar.cs
- isolationinterop.cs
- DesignerOptionService.cs
- CellParagraph.cs
- SrgsRule.cs
- EmptyElement.cs
- DiscoveryMessageSequenceCD1.cs
- TimeEnumHelper.cs
- CachedBitmap.cs
- ContentFileHelper.cs
- DataTableCollection.cs
- LinqDataSourceDisposeEventArgs.cs
- IEnumerable.cs
- UnsettableComboBox.cs
- HttpResponse.cs
- DataGridViewCheckBoxCell.cs
- XmlSigningNodeWriter.cs
- TypedReference.cs
- LogicalTreeHelper.cs
- HighlightComponent.cs
- Int32AnimationBase.cs
- objectquery_tresulttype.cs
- ReadOnlyCollectionBase.cs
- DataIdProcessor.cs
- BamlRecordHelper.cs
- SettingsPropertyCollection.cs
- XmlSchemaAnnotated.cs
- mongolianshape.cs
- CompilerLocalReference.cs
- QuestionEventArgs.cs
- RootAction.cs
- CodeLinePragma.cs
- LicenseManager.cs
- StrongNamePublicKeyBlob.cs
- AttachmentCollection.cs
- ValueType.cs
- OptimizerPatterns.cs
- WebPartHelpVerb.cs
- OperationGenerator.cs
- DockPanel.cs
- SurrogateEncoder.cs
- ResourceDefaultValueAttribute.cs
- OpacityConverter.cs
- XmlNavigatorStack.cs
- AppDomain.cs
- DataGridViewHeaderCell.cs
- InputScope.cs
- ReturnEventArgs.cs
- Attributes.cs
- XamlDesignerSerializationManager.cs
- Sql8ExpressionRewriter.cs
- DbConnectionHelper.cs
- WebPartMovingEventArgs.cs
- NameTable.cs
- Util.cs
- ByeMessage11.cs
- GridViewColumnHeaderAutomationPeer.cs
- SqlProcedureAttribute.cs
- HttpRequest.cs
- PathGeometry.cs
- OutputCacheSection.cs
- XmlSerializerNamespaces.cs
- Rect.cs
- ErrorHandlerModule.cs
- PropertyEmitter.cs
- XPathPatternBuilder.cs
- GridViewUpdateEventArgs.cs
- Timeline.cs
- FrameDimension.cs
- PipelineModuleStepContainer.cs
- SubqueryRules.cs
- UpdateRecord.cs
- SemanticBasicElement.cs
- InfoCardClaimCollection.cs
- SystemIPInterfaceProperties.cs
- OrderByQueryOptionExpression.cs
- DataGridViewRowsRemovedEventArgs.cs