Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Documents / ValidationHelper.cs / 1305600 / 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); 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
- Tokenizer.cs
- GradientSpreadMethodValidation.cs
- Base64Encoding.cs
- _HTTPDateParse.cs
- LineVisual.cs
- OSFeature.cs
- SymmetricCryptoHandle.cs
- SafeEventLogWriteHandle.cs
- OdbcConnectionFactory.cs
- DataSourceControl.cs
- COAUTHINFO.cs
- UniqueIdentifierService.cs
- GenericAuthenticationEventArgs.cs
- XmlSchemaObjectTable.cs
- PerformanceCountersElement.cs
- TextRangeAdaptor.cs
- OutputCacheProviderCollection.cs
- StreamResourceInfo.cs
- SqlWebEventProvider.cs
- ActivationArguments.cs
- WebScriptMetadataMessage.cs
- TreeViewEvent.cs
- AnnotationStore.cs
- SerialStream.cs
- JsonGlobals.cs
- JsonWriter.cs
- StackSpiller.cs
- GuidelineSet.cs
- Stack.cs
- ComponentChangingEvent.cs
- ArraySortHelper.cs
- ImageCodecInfo.cs
- SoapSchemaImporter.cs
- SimpleBitVector32.cs
- Section.cs
- DialogResultConverter.cs
- DbDataReader.cs
- ManipulationStartingEventArgs.cs
- WeakReferenceEnumerator.cs
- WrappedKeySecurityTokenParameters.cs
- LinqDataSourceStatusEventArgs.cs
- HttpCookiesSection.cs
- ViewBase.cs
- SmiRecordBuffer.cs
- Transform3DGroup.cs
- StyleTypedPropertyAttribute.cs
- XomlCompilerError.cs
- MemoryStream.cs
- ChildChangedEventArgs.cs
- ModelTypeConverter.cs
- IntegrationExceptionEventArgs.cs
- PackagePart.cs
- StrongNameMembershipCondition.cs
- OpenTypeCommon.cs
- ChangePasswordAutoFormat.cs
- ToolboxComponentsCreatingEventArgs.cs
- HttpTransportBindingElement.cs
- LocationSectionRecord.cs
- _BasicClient.cs
- StreamingContext.cs
- OrderedDictionaryStateHelper.cs
- SessionPageStateSection.cs
- UnauthorizedWebPart.cs
- EntityCollection.cs
- XPathArrayIterator.cs
- SamlConditions.cs
- BamlLocalizableResourceKey.cs
- IISMapPath.cs
- Rfc2898DeriveBytes.cs
- KerberosSecurityTokenAuthenticator.cs
- XhtmlBasicTextBoxAdapter.cs
- ToolStripArrowRenderEventArgs.cs
- GeometryValueSerializer.cs
- BodyGlyph.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- ConversionValidationRule.cs
- SystemIcmpV6Statistics.cs
- Material.cs
- ItemsPanelTemplate.cs
- QuestionEventArgs.cs
- AttributeUsageAttribute.cs
- ServiceModelPerformanceCounters.cs
- SQLMembershipProvider.cs
- ContainerParagraph.cs
- AuthenticationServiceManager.cs
- Asn1IntegerConverter.cs
- DelegateSerializationHolder.cs
- XmlUtil.cs
- InteropBitmapSource.cs
- TextAnchor.cs
- LineGeometry.cs
- DataGridrowEditEndingEventArgs.cs
- Int32.cs
- WebConfigurationHostFileChange.cs
- CurrentChangedEventManager.cs
- SHA256Managed.cs
- ProcessProtocolHandler.cs
- XmlSerializationReader.cs
- InvokeProviderWrapper.cs
- XmlSchemaParticle.cs