Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / System / Windows / Markup / RuntimeIdentifierPropertyAttribute.cs / 1305600 / 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; using System.Runtime.CompilerServices; #if PBTCOMPILER namespace MS.Internal.Markup #elif WINDOWS_BASE using MS.Internal.WindowsBase; // FriendAccessAllowed namespace System.Windows.Markup #else namespace System.Windows.Markup #endif { #if !PBTCOMPILER && !TARGETTING35SP1 && !WINDOWS_BASE ////// This attribute is placed on a class to identify the property that will /// function as an Name for the given class /// [AttributeUsage(AttributeTargets.Class)] [TypeForwardedFrom("WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35")] 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 #if !SYSTEM_XAML ////// 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; } } #endif } // 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; using System.Runtime.CompilerServices; #if PBTCOMPILER namespace MS.Internal.Markup #elif WINDOWS_BASE using MS.Internal.WindowsBase; // FriendAccessAllowed namespace System.Windows.Markup #else namespace System.Windows.Markup #endif { #if !PBTCOMPILER && !TARGETTING35SP1 && !WINDOWS_BASE /// /// This attribute is placed on a class to identify the property that will /// function as an Name for the given class /// [AttributeUsage(AttributeTargets.Class)] [TypeForwardedFrom("WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35")] 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 #if !SYSTEM_XAML ////// 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; } } #endif } // 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
- DesignerWidgets.cs
- WaitForChangedResult.cs
- Rotation3DAnimationBase.cs
- InputReferenceExpression.cs
- EventWaitHandleSecurity.cs
- BaseValidator.cs
- EdmConstants.cs
- TextSpanModifier.cs
- NamespaceEmitter.cs
- SqlProfileProvider.cs
- ByteStorage.cs
- ZipIOLocalFileBlock.cs
- WindowPattern.cs
- RegionData.cs
- Socket.cs
- LiteralText.cs
- StateRuntime.cs
- TextServicesCompartment.cs
- BookmarkScopeManager.cs
- SurrogateDataContract.cs
- MsmqIntegrationBindingElement.cs
- XsdValidatingReader.cs
- WebServiceMethodData.cs
- XmlCodeExporter.cs
- PropertyHelper.cs
- ReflectionUtil.cs
- LinearKeyFrames.cs
- ReliableOutputSessionChannel.cs
- AnnotationResourceChangedEventArgs.cs
- DropShadowBitmapEffect.cs
- EntityException.cs
- RSAPKCS1SignatureDeformatter.cs
- DataGridViewColumnDividerDoubleClickEventArgs.cs
- DataGridViewToolTip.cs
- TaiwanLunisolarCalendar.cs
- VectorKeyFrameCollection.cs
- FacetEnabledSchemaElement.cs
- EditBehavior.cs
- EndPoint.cs
- DBDataPermissionAttribute.cs
- JoinTreeNode.cs
- PointConverter.cs
- HtmlFormWrapper.cs
- ValueProviderWrapper.cs
- figurelength.cs
- complextypematerializer.cs
- SafeFileMappingHandle.cs
- UIElement3DAutomationPeer.cs
- NamespaceQuery.cs
- HtmlTableCell.cs
- AutoGeneratedFieldProperties.cs
- MatrixTransform3D.cs
- XhtmlBasicTextViewAdapter.cs
- GlyphRun.cs
- WpfMemberInvoker.cs
- ToggleButtonAutomationPeer.cs
- SimpleHandlerFactory.cs
- TableItemStyle.cs
- ObjectViewEntityCollectionData.cs
- GraphicsPathIterator.cs
- PlanCompilerUtil.cs
- AccessDataSource.cs
- RSAPKCS1SignatureFormatter.cs
- DataServiceRequestOfT.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- InternalEnumValidator.cs
- TextRangeBase.cs
- CodeIndexerExpression.cs
- FixedTextBuilder.cs
- Variable.cs
- PackagingUtilities.cs
- Roles.cs
- AlternateViewCollection.cs
- DataGridViewSelectedRowCollection.cs
- XmlTextReader.cs
- RemoteWebConfigurationHostServer.cs
- XamlClipboardData.cs
- CapabilitiesAssignment.cs
- SQLInt16Storage.cs
- SourceLineInfo.cs
- CommonProperties.cs
- StsCommunicationException.cs
- StorageSetMapping.cs
- PropertyPathConverter.cs
- FileDialogCustomPlaces.cs
- SystemTcpStatistics.cs
- SQLDateTimeStorage.cs
- HttpCapabilitiesBase.cs
- Maps.cs
- TemplateBamlTreeBuilder.cs
- ContextDataSourceContextData.cs
- CfgArc.cs
- SHA512Cng.cs
- DefaultAsyncDataDispatcher.cs
- BufferModeSettings.cs
- ParameterExpression.cs
- UserCancellationException.cs
- TextDecoration.cs
- AnnotationResourceCollection.cs
- UIElement3D.cs