Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataWeb / Server / System / Data / Services / IgnorePropertiesAttribute.cs / 1 / IgnorePropertiesAttribute.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // //// CLR attribute to be annotated on types which indicate the list of properties // to ignore. // // // @owner [....] //--------------------------------------------------------------------- namespace System.Data.Services { using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Reflection; using System.Diagnostics; using System.Data.Services.Providers; ///Attribute to be annotated on types with ETags. [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1019:DefineAccessorsForAttributeArguments", Justification = "Processed values are available.")] [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] public sealed class IgnorePropertiesAttribute : System.Attribute { ///Name of the properties that form the ETag. private readonly ReadOnlyCollectionpropertyNames; // This constructor was added since string[] is not a CLS-compliant type and // compiler gives a warning as error saying this attribute doesn't have any // constructor that takes CLS-compliant type /// /// Initializes a new instance of IgnoreProperties attribute with the property name /// that needs to be ignored /// /// Name of the property that form the ETag for the current type. public IgnorePropertiesAttribute(string propertyName) { WebUtil.CheckArgumentNull(propertyName, "propertyName"); this.propertyNames = new ReadOnlyCollection(new List (new string[1] { propertyName })); } /// /// Initializes a new instance of IgnoreProperties attribute with the list of property names /// that need to be ignored /// /// Name of the properties that form the ETag for the current type. public IgnorePropertiesAttribute(params string[] propertyNames) { WebUtil.CheckArgumentNull(propertyNames, "propertyNames"); if (propertyNames.Length == 0) { throw new ArgumentException(Strings.ETagAttribute_MustSpecifyAtleastOnePropertyName, "propertyNames"); } this.propertyNames = new ReadOnlyCollection(new List (propertyNames)); } /// Name of the properties that needs to be ignored for the current type. public ReadOnlyCollectionPropertyNames { get { return this.propertyNames; } } /// /// Validate and get the list of properties specified by this attribute on the given type. /// /// clr type on which this attribute must have defined. /// whether we need to inherit this attribute or not. /// For context types,we need to, since we can have one context dervied from another, and we want to ignore all the properties on the base ones too. /// For resource types, we don't need to, since we don't want derived types to know about ignore properties of the base type. Also /// from derived type, you cannot change the definition of the base type. /// binding flags to be used for validating property names. ///list of property names specified on IgnoreProperties on the given type. internal static IEnumerableGetProperties(Type type, bool inherit, BindingFlags bindingFlags) { IgnorePropertiesAttribute[] attributes = (IgnorePropertiesAttribute[])type.GetCustomAttributes(typeof(IgnorePropertiesAttribute), inherit); Debug.Assert(attributes.Length == 0 || attributes.Length == 1, "There should be atmost one IgnoreProperties specified"); if (attributes.Length == 1) { foreach (string propertyName in attributes[0].PropertyNames) { if (String.IsNullOrEmpty(propertyName)) { throw new InvalidOperationException(Strings.IgnorePropertiesAttribute_PropertyNameCannotBeNullOrEmpty); } PropertyInfo property = type.GetProperty(propertyName, bindingFlags); if (property == null) { throw new InvalidOperationException(Strings.IgnorePropertiesAttribute_InvalidPropertyName(propertyName, type.FullName)); } } return attributes[0].PropertyNames; } return WebUtil.EmptyStringArray; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // //// CLR attribute to be annotated on types which indicate the list of properties // to ignore. // // // @owner [....] //--------------------------------------------------------------------- namespace System.Data.Services { using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Reflection; using System.Diagnostics; using System.Data.Services.Providers; ///Attribute to be annotated on types with ETags. [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1019:DefineAccessorsForAttributeArguments", Justification = "Processed values are available.")] [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] public sealed class IgnorePropertiesAttribute : System.Attribute { ///Name of the properties that form the ETag. private readonly ReadOnlyCollectionpropertyNames; // This constructor was added since string[] is not a CLS-compliant type and // compiler gives a warning as error saying this attribute doesn't have any // constructor that takes CLS-compliant type /// /// Initializes a new instance of IgnoreProperties attribute with the property name /// that needs to be ignored /// /// Name of the property that form the ETag for the current type. public IgnorePropertiesAttribute(string propertyName) { WebUtil.CheckArgumentNull(propertyName, "propertyName"); this.propertyNames = new ReadOnlyCollection(new List (new string[1] { propertyName })); } /// /// Initializes a new instance of IgnoreProperties attribute with the list of property names /// that need to be ignored /// /// Name of the properties that form the ETag for the current type. public IgnorePropertiesAttribute(params string[] propertyNames) { WebUtil.CheckArgumentNull(propertyNames, "propertyNames"); if (propertyNames.Length == 0) { throw new ArgumentException(Strings.ETagAttribute_MustSpecifyAtleastOnePropertyName, "propertyNames"); } this.propertyNames = new ReadOnlyCollection(new List (propertyNames)); } /// Name of the properties that needs to be ignored for the current type. public ReadOnlyCollectionPropertyNames { get { return this.propertyNames; } } /// /// Validate and get the list of properties specified by this attribute on the given type. /// /// clr type on which this attribute must have defined. /// whether we need to inherit this attribute or not. /// For context types,we need to, since we can have one context dervied from another, and we want to ignore all the properties on the base ones too. /// For resource types, we don't need to, since we don't want derived types to know about ignore properties of the base type. Also /// from derived type, you cannot change the definition of the base type. /// binding flags to be used for validating property names. ///list of property names specified on IgnoreProperties on the given type. internal static IEnumerableGetProperties(Type type, bool inherit, BindingFlags bindingFlags) { IgnorePropertiesAttribute[] attributes = (IgnorePropertiesAttribute[])type.GetCustomAttributes(typeof(IgnorePropertiesAttribute), inherit); Debug.Assert(attributes.Length == 0 || attributes.Length == 1, "There should be atmost one IgnoreProperties specified"); if (attributes.Length == 1) { foreach (string propertyName in attributes[0].PropertyNames) { if (String.IsNullOrEmpty(propertyName)) { throw new InvalidOperationException(Strings.IgnorePropertiesAttribute_PropertyNameCannotBeNullOrEmpty); } PropertyInfo property = type.GetProperty(propertyName, bindingFlags); if (property == null) { throw new InvalidOperationException(Strings.IgnorePropertiesAttribute_InvalidPropertyName(propertyName, type.FullName)); } } return attributes[0].PropertyNames; } return WebUtil.EmptyStringArray; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ListViewTableCell.cs
- AmbiguousMatchException.cs
- ResourceCollectionInfo.cs
- XmlWrappingWriter.cs
- QuadraticBezierSegment.cs
- DataGridViewCellCancelEventArgs.cs
- UnionCqlBlock.cs
- PingOptions.cs
- PolicyStatement.cs
- UserInitiatedRoutedEventPermissionAttribute.cs
- EntityDataSourceValidationException.cs
- ClassImporter.cs
- MarkedHighlightComponent.cs
- ContainsSearchOperator.cs
- DataControlLinkButton.cs
- LinqDataSourceUpdateEventArgs.cs
- KeyboardNavigation.cs
- HttpStreams.cs
- OutputCacheProfile.cs
- String.cs
- Button.cs
- TemplateContainer.cs
- AtomicFile.cs
- BaseTreeIterator.cs
- SqlMetaData.cs
- ProfileEventArgs.cs
- ThemeDictionaryExtension.cs
- Relationship.cs
- ToggleButtonAutomationPeer.cs
- FontStretches.cs
- ResourceLoader.cs
- SuppressIldasmAttribute.cs
- IsolatedStorageFileStream.cs
- AsymmetricSignatureDeformatter.cs
- TreeViewCancelEvent.cs
- PassportAuthentication.cs
- XmlTextEncoder.cs
- ConnectionPoolRegistry.cs
- DrawToolTipEventArgs.cs
- _AutoWebProxyScriptHelper.cs
- TextParentUndoUnit.cs
- LinqDataSourceStatusEventArgs.cs
- ProcessStartInfo.cs
- X509CertificateCollection.cs
- XmlLoader.cs
- ThreadAbortException.cs
- ContainerUtilities.cs
- VideoDrawing.cs
- EpmSourceTree.cs
- ResourceType.cs
- UpWmlMobileTextWriter.cs
- XPathPatternParser.cs
- DoubleLink.cs
- DCSafeHandle.cs
- LinearQuaternionKeyFrame.cs
- Serialization.cs
- ScriptReference.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- RSAOAEPKeyExchangeFormatter.cs
- FilterableAttribute.cs
- SpeechRecognitionEngine.cs
- StaticContext.cs
- EntitySetRetriever.cs
- StartUpEventArgs.cs
- MediaSystem.cs
- Point3DCollectionConverter.cs
- InlineUIContainer.cs
- CollaborationHelperFunctions.cs
- HtmlControlAdapter.cs
- BulletChrome.cs
- RequestDescription.cs
- StylusCaptureWithinProperty.cs
- AutomationPatternInfo.cs
- MenuItemBinding.cs
- ArrayList.cs
- SqlNamer.cs
- BuildProvider.cs
- DetailsViewModeEventArgs.cs
- WpfPayload.cs
- SortDescriptionCollection.cs
- TypeUsage.cs
- XPathSingletonIterator.cs
- M3DUtil.cs
- Trace.cs
- OleServicesContext.cs
- RegisteredScript.cs
- ProcessHostConfigUtils.cs
- TextDecorations.cs
- Table.cs
- GenericIdentity.cs
- DataGridTablesFactory.cs
- InplaceBitmapMetadataWriter.cs
- MetabaseServerConfig.cs
- XmlSchemaImporter.cs
- FrameAutomationPeer.cs
- MDIClient.cs
- AttributeEmitter.cs
- ListView.cs
- RSAPKCS1SignatureDeformatter.cs
- Axis.cs