Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- SqlNode.cs
- CharStorage.cs
- InternalControlCollection.cs
- DbResourceAllocator.cs
- AsyncWaitHandle.cs
- DataServiceContext.cs
- DataServiceQueryProvider.cs
- InitializationEventAttribute.cs
- EditorZoneBase.cs
- ToolStripHighContrastRenderer.cs
- SimpleMailWebEventProvider.cs
- FileDialog_Vista.cs
- CodeDelegateCreateExpression.cs
- PermissionSet.cs
- HtmlImageAdapter.cs
- EnumValAlphaComparer.cs
- DecoratedNameAttribute.cs
- ObfuscateAssemblyAttribute.cs
- XmlReaderDelegator.cs
- ArcSegment.cs
- WebServiceErrorEvent.cs
- EventPropertyMap.cs
- ReadContentAsBinaryHelper.cs
- BitmapDownload.cs
- PresentationSource.cs
- RSAOAEPKeyExchangeFormatter.cs
- SqlTrackingQuery.cs
- Compilation.cs
- QueryStringParameter.cs
- Parameter.cs
- InstanceDataCollectionCollection.cs
- DBCSCodePageEncoding.cs
- X500Name.cs
- LexicalChunk.cs
- RawStylusInputCustomData.cs
- DirectoryInfo.cs
- ToolStripItemDataObject.cs
- WebPartVerb.cs
- ScriptDescriptor.cs
- EntityProxyFactory.cs
- MemberJoinTreeNode.cs
- CultureSpecificCharacterBufferRange.cs
- FontWeight.cs
- DataGridViewTopRowAccessibleObject.cs
- PrePrepareMethodAttribute.cs
- Model3D.cs
- XmlSchemaIdentityConstraint.cs
- PageParser.cs
- ControlPaint.cs
- LinqDataSourceEditData.cs
- SQLByte.cs
- CatalogPart.cs
- OdbcPermission.cs
- Msec.cs
- ProtocolsSection.cs
- NativeActivityTransactionContext.cs
- DesignerSerializationVisibilityAttribute.cs
- SqlGatherConsumedAliases.cs
- TableSectionStyle.cs
- WebBrowserHelper.cs
- PageAdapter.cs
- PageContentCollection.cs
- QilStrConcat.cs
- CollectionTypeElement.cs
- PropertyPushdownHelper.cs
- XsdCachingReader.cs
- NamespaceCollection.cs
- DataTableReaderListener.cs
- SystemTcpStatistics.cs
- ConnectorDragDropGlyph.cs
- EDesignUtil.cs
- EditorResources.cs
- LineVisual.cs
- CodeExpressionStatement.cs
- MouseDevice.cs
- SqlUtil.cs
- Substitution.cs
- CalendarBlackoutDatesCollection.cs
- DiffuseMaterial.cs
- SymmetricKeyWrap.cs
- And.cs
- XmlStreamStore.cs
- DeflateInput.cs
- IsolatedStorageException.cs
- TabPageDesigner.cs
- SQLChars.cs
- RenderDataDrawingContext.cs
- GridViewItemAutomationPeer.cs
- ProcessThread.cs
- HttpRequestWrapper.cs
- DesignerForm.cs
- BitmapEffect.cs
- DataGridViewCellValidatingEventArgs.cs
- StrokeNodeOperations2.cs
- ObjectSelectorEditor.cs
- ForeignKeyConstraint.cs
- CustomErrorCollection.cs
- XmlSerializationReader.cs
- __TransparentProxy.cs
- cookiecontainer.cs