Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Base / System / Windows / Markup / RuntimeIdentifierPropertyAttribute.cs / 1 / RuntimeIdentifierPropertyAttribute.cs
//---------------------------------------------------------------------------- // // File: RuntimeNamePropertyAttribute.cs // // Description: // This attribute is placed on a class to identify the property that will // function as an Name for the given class // // History: // 1/26/05: fmunoz Created // // Copyright (C) 2005 by Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.Globalization; #if PBTCOMPILER namespace MS.Internal.Markup #else using MS.Internal.WindowsBase; // FriendAccessAllowed namespace System.Windows.Markup #endif { #if !PBTCOMPILER ////// This attribute is placed on a class to identify the property that will /// function as an Name for the given class /// [AttributeUsage(AttributeTargets.Class)] public sealed class RuntimeNamePropertyAttribute: Attribute { ///public RuntimeNamePropertyAttribute(string name) { _name = name; } /// /// The Name of the property in the class that will contain the ID of /// the class, this property needs to be of type string and have /// both get and set access /// public string Name { get { return _name; } } private string _name = null; } #endif ////// The string used in RuntimeNameProperty is expected to follow certain /// rules. IsValidIdentifierName checks the given string against the rules. /// NameValidationCallback extends to all object types and is in the right /// format to be used as a DependencyProperty ValidateValueCallback /// internal static class NameValidationHelper { // When a name string comes in programatically, validate it against the // same rules used by the XAML parser. In XAML scenarios this is // technically redundant since the parser has already checked it against // the same rules, but the parser is able to give a better error message // when it happens. #if !PBTCOMPILER [FriendAccessAllowed] // Built into Base, used by Core and Framework. internal static bool NameValidationCallback(object candidateName) { string name = candidateName as string; if( name != null ) { // Non-null string, ask the XAML validation code for blessing. return IsValidIdentifierName(name); } else if( candidateName == null ) { // Null string is allowed return true; } else { // candiateName is not a string object. return false; } } #endif ////// Validates the name to follow Naming guidelines /// /// string to validate #if !PBTCOMPILER [FriendAccessAllowed] // Built into Base, used by Core and Framework. #endif internal static bool IsValidIdentifierName(string name) { // Grammar: //::= ( | )* // ::= [{Lu}{Ll}{Lt}{Lo}{Nl}('_')] // ::= [{Mn}{Mc}{Lm}{Nd}] UnicodeCategory uc; for (int i = 0; i < name.Length; i++) { uc = Char.GetUnicodeCategory(name[i]); bool idStart = (uc == UnicodeCategory.UppercaseLetter || // (Lu) uc == UnicodeCategory.LowercaseLetter || // (Ll) uc == UnicodeCategory.TitlecaseLetter || // (Lt) uc == UnicodeCategory.OtherLetter || // (Lo) uc == UnicodeCategory.LetterNumber || // (Nl) name[i] == '_'); bool idExtend = (uc == UnicodeCategory.NonSpacingMark || // (Mn) uc == UnicodeCategory.SpacingCombiningMark || // (Mc) uc == UnicodeCategory.ModifierLetter || // (Lm) uc == UnicodeCategory.DecimalDigitNumber); // (Nd) if (i == 0) { if (!idStart) { return false; } } else if (!(idStart || idExtend)) { return false; } } return true; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // // File: RuntimeNamePropertyAttribute.cs // // Description: // This attribute is placed on a class to identify the property that will // function as an Name for the given class // // History: // 1/26/05: fmunoz Created // // Copyright (C) 2005 by Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.Globalization; #if PBTCOMPILER namespace MS.Internal.Markup #else using MS.Internal.WindowsBase; // FriendAccessAllowed namespace System.Windows.Markup #endif { #if !PBTCOMPILER /// /// This attribute is placed on a class to identify the property that will /// function as an Name for the given class /// [AttributeUsage(AttributeTargets.Class)] public sealed class RuntimeNamePropertyAttribute: Attribute { ///public RuntimeNamePropertyAttribute(string name) { _name = name; } /// /// The Name of the property in the class that will contain the ID of /// the class, this property needs to be of type string and have /// both get and set access /// public string Name { get { return _name; } } private string _name = null; } #endif ////// The string used in RuntimeNameProperty is expected to follow certain /// rules. IsValidIdentifierName checks the given string against the rules. /// NameValidationCallback extends to all object types and is in the right /// format to be used as a DependencyProperty ValidateValueCallback /// internal static class NameValidationHelper { // When a name string comes in programatically, validate it against the // same rules used by the XAML parser. In XAML scenarios this is // technically redundant since the parser has already checked it against // the same rules, but the parser is able to give a better error message // when it happens. #if !PBTCOMPILER [FriendAccessAllowed] // Built into Base, used by Core and Framework. internal static bool NameValidationCallback(object candidateName) { string name = candidateName as string; if( name != null ) { // Non-null string, ask the XAML validation code for blessing. return IsValidIdentifierName(name); } else if( candidateName == null ) { // Null string is allowed return true; } else { // candiateName is not a string object. return false; } } #endif ////// Validates the name to follow Naming guidelines /// /// string to validate #if !PBTCOMPILER [FriendAccessAllowed] // Built into Base, used by Core and Framework. #endif internal static bool IsValidIdentifierName(string name) { // Grammar: //::= ( | )* // ::= [{Lu}{Ll}{Lt}{Lo}{Nl}('_')] // ::= [{Mn}{Mc}{Lm}{Nd}] UnicodeCategory uc; for (int i = 0; i < name.Length; i++) { uc = Char.GetUnicodeCategory(name[i]); bool idStart = (uc == UnicodeCategory.UppercaseLetter || // (Lu) uc == UnicodeCategory.LowercaseLetter || // (Ll) uc == UnicodeCategory.TitlecaseLetter || // (Lt) uc == UnicodeCategory.OtherLetter || // (Lo) uc == UnicodeCategory.LetterNumber || // (Nl) name[i] == '_'); bool idExtend = (uc == UnicodeCategory.NonSpacingMark || // (Mn) uc == UnicodeCategory.SpacingCombiningMark || // (Mc) uc == UnicodeCategory.ModifierLetter || // (Lm) uc == UnicodeCategory.DecimalDigitNumber); // (Nd) if (i == 0) { if (!idStart) { return false; } } else if (!(idStart || idExtend)) { return false; } } return true; } } } // 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
- ZipArchive.cs
- ContactManager.cs
- ZipQueryOperator.cs
- ArglessEventHandlerProxy.cs
- PropertyValueChangedEvent.cs
- ShaderRenderModeValidation.cs
- MouseGestureConverter.cs
- TextBox.cs
- SiteMap.cs
- CancellationTokenRegistration.cs
- QueueException.cs
- MsdtcWrapper.cs
- Calendar.cs
- DataKey.cs
- CodeEventReferenceExpression.cs
- XPathNavigatorKeyComparer.cs
- BridgeDataRecord.cs
- PrintControllerWithStatusDialog.cs
- SoapProtocolImporter.cs
- MarginCollapsingState.cs
- DataGridRow.cs
- PageAsyncTaskManager.cs
- JsonByteArrayDataContract.cs
- EntityDataSourceDataSelectionPanel.cs
- _BaseOverlappedAsyncResult.cs
- WebPartCloseVerb.cs
- HttpModulesSection.cs
- OleDbPropertySetGuid.cs
- HwndSubclass.cs
- ImageFormatConverter.cs
- RightsManagementEncryptionTransform.cs
- Predicate.cs
- ServiceOperationUIEditor.cs
- BitmapEffectState.cs
- XmlSchemaSimpleContent.cs
- WebExceptionStatus.cs
- RecordManager.cs
- GPStream.cs
- DataGridViewCellStyleConverter.cs
- ExpressionValueEditor.cs
- DataGridViewDataErrorEventArgs.cs
- NavigatorOutput.cs
- LinearKeyFrames.cs
- NGCPageContentSerializerAsync.cs
- Transform3DGroup.cs
- TextSerializer.cs
- JsonGlobals.cs
- MailMessageEventArgs.cs
- PolygonHotSpot.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- DataGridViewColumnConverter.cs
- Int32CAMarshaler.cs
- WorkflowInstanceRecord.cs
- RowVisual.cs
- XmlSequenceWriter.cs
- InputDevice.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- XmlNode.cs
- PackageRelationship.cs
- DataRelation.cs
- URLMembershipCondition.cs
- ISO2022Encoding.cs
- TextRunCacheImp.cs
- ConfigErrorGlyph.cs
- DataTableReader.cs
- DataGridViewRowsAddedEventArgs.cs
- MessageTransmitTraceRecord.cs
- Selection.cs
- Zone.cs
- SortDescriptionCollection.cs
- FigureParaClient.cs
- InvalidComObjectException.cs
- VisualStyleElement.cs
- LongMinMaxAggregationOperator.cs
- DESCryptoServiceProvider.cs
- IPAddressCollection.cs
- ChangeInterceptorAttribute.cs
- TextElementAutomationPeer.cs
- CompositeDataBoundControl.cs
- OutputCacheSettingsSection.cs
- StatusBarPanel.cs
- ErrorFormatterPage.cs
- CodeMemberField.cs
- HopperCache.cs
- BindingCompleteEventArgs.cs
- FixedTextContainer.cs
- SoundPlayer.cs
- ServiceSecurityAuditElement.cs
- WebPartPersonalization.cs
- FormsAuthenticationUserCollection.cs
- GeneralTransform3DTo2DTo3D.cs
- NumericExpr.cs
- ToolStripItemCollection.cs
- FormViewUpdateEventArgs.cs
- UnsafeNativeMethodsTablet.cs
- XamlPathDataSerializer.cs
- CodeDOMUtility.cs
- CommonDialog.cs
- ServiceControllerDesigner.cs
- StringComparer.cs