Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / Metadata / Edm / StructuralType.cs / 1 / StructuralType.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....], [....] //--------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Diagnostics; using System.Data.Common; using System.Text; namespace System.Data.Metadata.Edm { ////// Represents the Structural Type /// public abstract class StructuralType : EdmType { #region Constructors ////// Internal parameterless constructor for bootstrapping edmtypes /// internal StructuralType() { _members = new MemberCollection(this); _readOnlyMembers = _members.AsReadOnlyMetadataCollection(); } ////// Initializes a new instance of Structural Type with the given members /// /// name of the structural type /// namespace of the structural type /// version of the structural type /// dataSpace in which this edmtype belongs to ///Thrown if either name, namespace or version arguments are null internal StructuralType(string name, string namespaceName, DataSpace dataSpace) : base(name, namespaceName, dataSpace) { _members = new MemberCollection(this); _readOnlyMembers = _members.AsReadOnlyMetadataCollection(); } #endregion #region Fields private readonly MemberCollection _members; private readonly ReadOnlyMetadataCollection_readOnlyMembers; #endregion #region Properties /// /// Returns the collection of members. /// [MetadataProperty(BuiltInTypeKind.EdmMember, true)] public ReadOnlyMetadataCollectionMembers { get { return _readOnlyMembers; } } #endregion #region Methods /// /// Get the declared only members of a particular type /// internal ReadOnlyMetadataCollectionGetDeclaredOnlyMembers () where T : EdmMember { return _members.GetDeclaredOnlyMembers (); } /// /// Validates the types and sets the readOnly property to true. Once the type is set to readOnly, /// it can never be changed. /// internal override void SetReadOnly() { if (!IsReadOnly) { base.SetReadOnly(); this.Members.Source.SetReadOnly(); } } ////// Validates a EdmMember object to determine if it can be added to this type's /// Members collection. If this method returns without throwing, it is assumed /// the member is valid. /// /// The member to validate internal abstract void ValidateMemberForAdd(EdmMember member); ////// Adds a member to this type /// /// The member to add internal void AddMember(EdmMember member) { EntityUtil.GenericCheckArgumentNull(member, "member"); Util.ThrowIfReadOnly(this); Debug.Assert(this.DataSpace == member.TypeUsage.EdmType.DataSpace || this.BuiltInTypeKind == BuiltInTypeKind.RowType, "Wrong member type getting added in structural type"); //Since we set the DataSpace of the RowType to be -1 in the constructor, we need to initialize it //as and when we add members to it if (BuiltInTypeKind.RowType == this.BuiltInTypeKind) { // Do this only when you are adding the first member if (_members.Count == 0) { this.DataSpace = member.TypeUsage.EdmType.DataSpace; } // We need to build types that span across more than one space. For such row types, we set the // DataSpace to -1 else if (this.DataSpace != (DataSpace)(-1) && member.TypeUsage.EdmType.DataSpace != this.DataSpace) { this.DataSpace = (DataSpace)(-1); } } this._members.Add(member); } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....], [....] //--------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Diagnostics; using System.Data.Common; using System.Text; namespace System.Data.Metadata.Edm { ////// Represents the Structural Type /// public abstract class StructuralType : EdmType { #region Constructors ////// Internal parameterless constructor for bootstrapping edmtypes /// internal StructuralType() { _members = new MemberCollection(this); _readOnlyMembers = _members.AsReadOnlyMetadataCollection(); } ////// Initializes a new instance of Structural Type with the given members /// /// name of the structural type /// namespace of the structural type /// version of the structural type /// dataSpace in which this edmtype belongs to ///Thrown if either name, namespace or version arguments are null internal StructuralType(string name, string namespaceName, DataSpace dataSpace) : base(name, namespaceName, dataSpace) { _members = new MemberCollection(this); _readOnlyMembers = _members.AsReadOnlyMetadataCollection(); } #endregion #region Fields private readonly MemberCollection _members; private readonly ReadOnlyMetadataCollection_readOnlyMembers; #endregion #region Properties /// /// Returns the collection of members. /// [MetadataProperty(BuiltInTypeKind.EdmMember, true)] public ReadOnlyMetadataCollectionMembers { get { return _readOnlyMembers; } } #endregion #region Methods /// /// Get the declared only members of a particular type /// internal ReadOnlyMetadataCollectionGetDeclaredOnlyMembers () where T : EdmMember { return _members.GetDeclaredOnlyMembers (); } /// /// Validates the types and sets the readOnly property to true. Once the type is set to readOnly, /// it can never be changed. /// internal override void SetReadOnly() { if (!IsReadOnly) { base.SetReadOnly(); this.Members.Source.SetReadOnly(); } } ////// Validates a EdmMember object to determine if it can be added to this type's /// Members collection. If this method returns without throwing, it is assumed /// the member is valid. /// /// The member to validate internal abstract void ValidateMemberForAdd(EdmMember member); ////// Adds a member to this type /// /// The member to add internal void AddMember(EdmMember member) { EntityUtil.GenericCheckArgumentNull(member, "member"); Util.ThrowIfReadOnly(this); Debug.Assert(this.DataSpace == member.TypeUsage.EdmType.DataSpace || this.BuiltInTypeKind == BuiltInTypeKind.RowType, "Wrong member type getting added in structural type"); //Since we set the DataSpace of the RowType to be -1 in the constructor, we need to initialize it //as and when we add members to it if (BuiltInTypeKind.RowType == this.BuiltInTypeKind) { // Do this only when you are adding the first member if (_members.Count == 0) { this.DataSpace = member.TypeUsage.EdmType.DataSpace; } // We need to build types that span across more than one space. For such row types, we set the // DataSpace to -1 else if (this.DataSpace != (DataSpace)(-1) && member.TypeUsage.EdmType.DataSpace != this.DataSpace) { this.DataSpace = (DataSpace)(-1); } } this._members.Add(member); } #endregion } } // 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
- TextElementEditingBehaviorAttribute.cs
- XmlIlTypeHelper.cs
- SqlInfoMessageEvent.cs
- HttpHandlersSection.cs
- DataFormat.cs
- SqlPersonalizationProvider.cs
- OuterGlowBitmapEffect.cs
- MessageQueue.cs
- RSAProtectedConfigurationProvider.cs
- HighlightVisual.cs
- PresentationTraceSources.cs
- Debugger.cs
- FieldTemplateUserControl.cs
- EditingCoordinator.cs
- DbConnectionPoolOptions.cs
- Knowncolors.cs
- XmlDictionary.cs
- AsyncResult.cs
- FileDataSourceCache.cs
- XmlCharacterData.cs
- ExceptionNotification.cs
- SafeEventLogReadHandle.cs
- PasswordRecovery.cs
- RuntimeHandles.cs
- COM2ExtendedTypeConverter.cs
- ConfigurationSection.cs
- SQLBytes.cs
- PropertyIDSet.cs
- RelatedCurrencyManager.cs
- DrawingBrush.cs
- DataRowExtensions.cs
- ValidationPropertyAttribute.cs
- CompositeCollection.cs
- PointAnimationUsingKeyFrames.cs
- EndpointBehaviorElement.cs
- StringWriter.cs
- EventHandlerList.cs
- RadioButtonList.cs
- TypeForwardedFromAttribute.cs
- NullableFloatMinMaxAggregationOperator.cs
- XmlDictionaryReaderQuotasElement.cs
- IIS7UserPrincipal.cs
- ExternalException.cs
- ProjectionPlanCompiler.cs
- BufferedStream2.cs
- QueueProcessor.cs
- RoutedPropertyChangedEventArgs.cs
- DocumentViewerAutomationPeer.cs
- FontInfo.cs
- ElementsClipboardData.cs
- PriorityChain.cs
- FormatSettings.cs
- StructuralCache.cs
- UInt16Storage.cs
- dataprotectionpermission.cs
- AmbientProperties.cs
- Single.cs
- StandardToolWindows.cs
- IntSecurity.cs
- ParallelSeparator.xaml.cs
- TokenizerHelper.cs
- ConfigurationValidatorBase.cs
- XmlSignificantWhitespace.cs
- ErrorProvider.cs
- ThreadNeutralSemaphore.cs
- RawMouseInputReport.cs
- ThicknessConverter.cs
- ISAPIRuntime.cs
- ExtendedPropertyCollection.cs
- ProtocolsSection.cs
- BindingEntityInfo.cs
- HeaderedContentControl.cs
- ActiveXHelper.cs
- CodeCatchClauseCollection.cs
- SqlDataSourceWizardForm.cs
- _IPv4Address.cs
- SizeChangedEventArgs.cs
- EastAsianLunisolarCalendar.cs
- ItemList.cs
- GroupBox.cs
- SafeFileMapViewHandle.cs
- InfoCardTrace.cs
- MD5CryptoServiceProvider.cs
- RuntimeVariableList.cs
- BaseValidator.cs
- VisualBrush.cs
- XmlSchemaValidator.cs
- Queue.cs
- GradientBrush.cs
- MimeMultiPart.cs
- ComplexPropertyEntry.cs
- DataGridViewImageCell.cs
- IChannel.cs
- DuplicateWaitObjectException.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- Query.cs
- XsdDateTime.cs
- IODescriptionAttribute.cs
- RC2.cs
- XmlTextReaderImplHelpers.cs