Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataEntity / System / Data / Metadata / Edm / StructuralType.cs / 2 / 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
- ArrayWithOffset.cs
- HtmlEmptyTagControlBuilder.cs
- ObjectToIdCache.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- Composition.cs
- HiddenFieldPageStatePersister.cs
- JsonEnumDataContract.cs
- ResourcesChangeInfo.cs
- ToolStripPanelRenderEventArgs.cs
- SqlRowUpdatingEvent.cs
- WindowsPrincipal.cs
- XPathNodeIterator.cs
- WSSecurityTokenSerializer.cs
- DataGridViewMethods.cs
- SocketException.cs
- LineGeometry.cs
- CatalogZoneBase.cs
- XMLDiffLoader.cs
- columnmapkeybuilder.cs
- ListManagerBindingsCollection.cs
- RTLAwareMessageBox.cs
- TransformCryptoHandle.cs
- ResolveNextArgumentWorkItem.cs
- GlobalizationSection.cs
- FormViewUpdatedEventArgs.cs
- WebBrowserNavigatedEventHandler.cs
- TableItemPattern.cs
- IPEndPointCollection.cs
- RuleInfoComparer.cs
- HtmlTitle.cs
- SqlConnectionManager.cs
- ProjectionPath.cs
- WebPartExportVerb.cs
- TrimSurroundingWhitespaceAttribute.cs
- CdpEqualityComparer.cs
- PathStreamGeometryContext.cs
- ListViewAutomationPeer.cs
- DataGridViewCell.cs
- SafeNativeMethodsCLR.cs
- StubHelpers.cs
- Item.cs
- Helper.cs
- SymmetricKeyWrap.cs
- Operand.cs
- SafeNativeMethods.cs
- TreeView.cs
- TTSEvent.cs
- SapiInterop.cs
- DataBoundLiteralControl.cs
- InvalidProgramException.cs
- Point3DAnimation.cs
- DragDropManager.cs
- GridViewHeaderRowPresenter.cs
- ClientScriptManager.cs
- MulticastNotSupportedException.cs
- Comparer.cs
- CopyCodeAction.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- PointAnimation.cs
- DockPatternIdentifiers.cs
- MediaPlayerState.cs
- SmtpClient.cs
- SubtreeProcessor.cs
- PerformanceCounterCategory.cs
- Gdiplus.cs
- TypedColumnHandler.cs
- CustomWebEventKey.cs
- CqlWriter.cs
- _emptywebproxy.cs
- PartitionerStatic.cs
- ListDataBindEventArgs.cs
- Query.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- UrlMappingsSection.cs
- PolyLineSegment.cs
- CellQuery.cs
- DecoratedNameAttribute.cs
- LinearGradientBrush.cs
- SourceFileBuildProvider.cs
- DataGridViewTextBoxCell.cs
- ClientApiGenerator.cs
- PositiveTimeSpanValidator.cs
- AuthenticationConfig.cs
- ObservableCollection.cs
- ProcessHostServerConfig.cs
- LZCodec.cs
- IfAction.cs
- Error.cs
- ISO2022Encoding.cs
- ProtocolImporter.cs
- ResourceReferenceExpressionConverter.cs
- ProviderIncompatibleException.cs
- WebBrowser.cs
- StringUtil.cs
- OleDbConnectionFactory.cs
- SnapLine.cs
- RoutingEndpointTrait.cs
- EntitySqlQueryCacheKey.cs
- PieceNameHelper.cs
- ParserExtension.cs