Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Base / System / Windows / Markup / RuntimeIdentifierPropertyAttribute.cs / 2 / 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: [....] 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
- TextTrailingCharacterEllipsis.cs
- Baml6Assembly.cs
- SchemaImporterExtensionElement.cs
- DataControlCommands.cs
- HtmlInputButton.cs
- RelationalExpressions.cs
- VirtualDirectoryMappingCollection.cs
- ChtmlMobileTextWriter.cs
- XpsS0ValidatingLoader.cs
- ReferenceEqualityComparer.cs
- WrappedReader.cs
- AnnotationService.cs
- EasingFunctionBase.cs
- SmiMetaData.cs
- ParseNumbers.cs
- SafeWaitHandle.cs
- WriteableBitmap.cs
- MouseActionConverter.cs
- MetricEntry.cs
- SEHException.cs
- Splitter.cs
- TextDpi.cs
- WeakReadOnlyCollection.cs
- VisualBasicSettings.cs
- TemplateBindingExtension.cs
- EventHandlers.cs
- ByteStream.cs
- SqlDataReaderSmi.cs
- DetailsView.cs
- FormViewPagerRow.cs
- DBBindings.cs
- AppModelKnownContentFactory.cs
- WpfKnownTypeInvoker.cs
- UntypedNullExpression.cs
- XmlAnyElementAttribute.cs
- Qualifier.cs
- PatternMatcher.cs
- CharacterHit.cs
- MetafileHeader.cs
- StorageSetMapping.cs
- DragAssistanceManager.cs
- CompressedStack.cs
- DrawListViewItemEventArgs.cs
- PropertyGridEditorPart.cs
- NestedContainer.cs
- OneOfElement.cs
- WorkflowPageSetupDialog.cs
- SqlConnectionString.cs
- ButtonStandardAdapter.cs
- Annotation.cs
- XmlJsonWriter.cs
- PointAnimation.cs
- JavaScriptSerializer.cs
- EnumBuilder.cs
- PartitionResolver.cs
- HwndSourceKeyboardInputSite.cs
- ResolveMatchesApril2005.cs
- Region.cs
- SchemaAttDef.cs
- SqlTypeConverter.cs
- UICuesEvent.cs
- WindowsUserNameCachingSecurityTokenAuthenticator.cs
- BindingWorker.cs
- Attributes.cs
- COM2DataTypeToManagedDataTypeConverter.cs
- securitycriticaldataformultiplegetandset.cs
- StateWorkerRequest.cs
- XDeferredAxisSource.cs
- ComponentChangedEvent.cs
- WindowsMenu.cs
- FileChangesMonitor.cs
- TabControl.cs
- ExtendedPropertyCollection.cs
- ToolTipService.cs
- SelectionRangeConverter.cs
- UiaCoreProviderApi.cs
- SerializationInfo.cs
- QuaternionConverter.cs
- Int32Converter.cs
- PropertyGrid.cs
- ProfileInfo.cs
- ProfileProvider.cs
- WebServicesSection.cs
- CacheOutputQuery.cs
- SqlClientPermission.cs
- TextReturnReader.cs
- FaultContractInfo.cs
- OutputCacheSettings.cs
- UpdateTracker.cs
- ping.cs
- FloaterParaClient.cs
- DiagnosticsConfigurationHandler.cs
- TailPinnedEventArgs.cs
- RouteValueExpressionBuilder.cs
- ScrollViewer.cs
- PinnedBufferMemoryStream.cs
- DecimalAnimationBase.cs
- WindowsGrip.cs
- DynamicFilterExpression.cs
- RNGCryptoServiceProvider.cs