Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Metadata / Edm / StructuralType.cs / 1305376 / StructuralType.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- 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
- TextEffectCollection.cs
- OuterGlowBitmapEffect.cs
- DataSetUtil.cs
- StringPropertyBuilder.cs
- WebBrowserPermission.cs
- Brush.cs
- SoapAttributeAttribute.cs
- InfoCardHelper.cs
- XmlDocumentType.cs
- CodeBlockBuilder.cs
- ConnectionManagementElement.cs
- UrlPath.cs
- COAUTHIDENTITY.cs
- FileDetails.cs
- ImageFormatConverter.cs
- PathGeometry.cs
- IDReferencePropertyAttribute.cs
- GeometryGroup.cs
- SamlAttributeStatement.cs
- XslNumber.cs
- DownloadProgressEventArgs.cs
- LineMetrics.cs
- SecurityManager.cs
- InputScopeAttribute.cs
- CodeArrayIndexerExpression.cs
- TimeSpanOrInfiniteConverter.cs
- NameNode.cs
- PropagatorResult.cs
- GorillaCodec.cs
- CodeGroup.cs
- InkCanvasSelectionAdorner.cs
- TrailingSpaceComparer.cs
- Tracking.cs
- DataGrid.cs
- WebPartUserCapability.cs
- SqlVisitor.cs
- EdmComplexTypeAttribute.cs
- XmlSchema.cs
- HttpRequest.cs
- HealthMonitoringSection.cs
- MorphHelper.cs
- UnknownWrapper.cs
- storagemappingitemcollection.viewdictionary.cs
- CultureTable.cs
- ListViewInsertionMark.cs
- Directory.cs
- SecUtil.cs
- XPathSelectionIterator.cs
- CheckBoxAutomationPeer.cs
- TableRowCollection.cs
- SessionStateUtil.cs
- AddInServer.cs
- ConnectionStringsExpressionBuilder.cs
- ArglessEventHandlerProxy.cs
- PrintPreviewGraphics.cs
- CqlWriter.cs
- EndPoint.cs
- PrintControllerWithStatusDialog.cs
- RuntimeEnvironment.cs
- ListViewSortEventArgs.cs
- TdsValueSetter.cs
- OperationResponse.cs
- HostingEnvironmentSection.cs
- ValuePattern.cs
- ManipulationDelta.cs
- ViewEvent.cs
- CodeConditionStatement.cs
- ComPlusTypeLoader.cs
- PageTextBox.cs
- SubqueryRules.cs
- FragmentQueryKB.cs
- NameObjectCollectionBase.cs
- Rect3DValueSerializer.cs
- NativeMethods.cs
- JavaScriptSerializer.cs
- Pair.cs
- PageHandlerFactory.cs
- AsyncContentLoadedEventArgs.cs
- ToolboxItemCollection.cs
- XmlAttributeCollection.cs
- RandomNumberGenerator.cs
- SerializationStore.cs
- Operator.cs
- HttpListenerContext.cs
- SmiTypedGetterSetter.cs
- ResourceExpressionEditorSheet.cs
- LinqDataSourceDeleteEventArgs.cs
- ProfileWorkflowElement.cs
- HwndSourceParameters.cs
- TableRowCollection.cs
- Brush.cs
- figurelengthconverter.cs
- VirtualizedCellInfoCollection.cs
- COM2PropertyPageUITypeConverter.cs
- CacheModeConverter.cs
- ClientConfigurationHost.cs
- Rotation3DKeyFrameCollection.cs
- ObjectFullSpanRewriter.cs
- ImageButton.cs
- TemplatePagerField.cs