Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- WindowsGraphics.cs
- SecurityContext.cs
- UIElementParaClient.cs
- DispatchChannelSink.cs
- Panel.cs
- WorkflowMarkupSerializer.cs
- COM2ExtendedUITypeEditor.cs
- SortQuery.cs
- DataControlCommands.cs
- FontSourceCollection.cs
- ExtendedPropertyDescriptor.cs
- FileSystemInfo.cs
- XmlException.cs
- BoundColumn.cs
- Object.cs
- Assign.cs
- UndoManager.cs
- WindowsAltTab.cs
- FacetValueContainer.cs
- XsdSchemaFileEditor.cs
- dsa.cs
- Brush.cs
- UdpRetransmissionSettings.cs
- TimersDescriptionAttribute.cs
- ServiceOperationParameter.cs
- AppDomainProtocolHandler.cs
- AtomContentProperty.cs
- Double.cs
- CatalogZoneBase.cs
- X500Name.cs
- ToolStripContainerDesigner.cs
- TransformCollection.cs
- WaitForChangedResult.cs
- LinqDataSourceStatusEventArgs.cs
- SamlAuthorizationDecisionClaimResource.cs
- Annotation.cs
- X509CertificateEndpointIdentity.cs
- File.cs
- BaseCAMarshaler.cs
- SqlMetaData.cs
- SafeNativeMethodsOther.cs
- HashStream.cs
- ParentQuery.cs
- DataColumnChangeEvent.cs
- BrowserCapabilitiesFactory.cs
- RunClient.cs
- HttpProfileBase.cs
- PropertyTabChangedEvent.cs
- SchemaDeclBase.cs
- PropertyTab.cs
- InvalidOleVariantTypeException.cs
- TextPenaltyModule.cs
- MenuAutomationPeer.cs
- OdbcCommandBuilder.cs
- securestring.cs
- Registry.cs
- XmlUnspecifiedAttribute.cs
- PasswordPropertyTextAttribute.cs
- PropertyIDSet.cs
- DecodeHelper.cs
- ArraySubsetEnumerator.cs
- Form.cs
- DbBuffer.cs
- SRGSCompiler.cs
- StateMachineSubscription.cs
- SerializationSectionGroup.cs
- ReflectionHelper.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- HtmlWindow.cs
- MissingSatelliteAssemblyException.cs
- PolyLineSegment.cs
- DescendantBaseQuery.cs
- BufferedStream.cs
- DodSequenceMerge.cs
- ExceptionHandler.cs
- InternalsVisibleToAttribute.cs
- MemberRelationshipService.cs
- StatusBarPanelClickEvent.cs
- EntityType.cs
- newinstructionaction.cs
- NetTcpSectionData.cs
- Vector3DCollectionValueSerializer.cs
- HtmlButton.cs
- FormsAuthenticationEventArgs.cs
- VirtualPath.cs
- PackageDigitalSignature.cs
- ToolStripItemGlyph.cs
- RunClient.cs
- ScriptHandlerFactory.cs
- DataContractSerializerFaultFormatter.cs
- NamespaceEmitter.cs
- ExpressionVisitor.cs
- ValidationEventArgs.cs
- PrincipalPermission.cs
- DataGridBeginningEditEventArgs.cs
- DataGridViewUtilities.cs
- StringConcat.cs
- ClientSideProviderDescription.cs
- SchemaInfo.cs
- CodeSnippetExpression.cs