Code:
/ 4.0 / 4.0 / 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. //---------------------------------------------------------------------- //// 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
- LinqDataSourceSelectEventArgs.cs
- BulletedListEventArgs.cs
- SessionIDManager.cs
- DataRelation.cs
- MediaSystem.cs
- ClientOptions.cs
- DataGridRow.cs
- FileSecurity.cs
- NamedPipeTransportElement.cs
- ConfigurationElementProperty.cs
- TagMapCollection.cs
- UmAlQuraCalendar.cs
- ExceptionValidationRule.cs
- StorageEntityContainerMapping.cs
- DSASignatureFormatter.cs
- DynamicILGenerator.cs
- PlatformNotSupportedException.cs
- GenericUriParser.cs
- FileRecordSequenceHelper.cs
- ProfileParameter.cs
- ExtentKey.cs
- VisualBasicImportReference.cs
- OdbcDataReader.cs
- VersionPair.cs
- CodeCommentStatementCollection.cs
- FolderLevelBuildProviderCollection.cs
- HtmlElementCollection.cs
- HyperLinkStyle.cs
- BrowserInteropHelper.cs
- StartUpEventArgs.cs
- ellipse.cs
- WindowsRebar.cs
- StorageFunctionMapping.cs
- PolicyReader.cs
- SolidColorBrush.cs
- PowerEase.cs
- XsdDateTime.cs
- SrgsDocumentParser.cs
- ProviderManager.cs
- WebPartAddingEventArgs.cs
- BoolExpression.cs
- LogicalMethodInfo.cs
- QilList.cs
- ButtonBase.cs
- ContentOperations.cs
- CompositeCollectionView.cs
- ComponentEditorForm.cs
- BorderGapMaskConverter.cs
- SingleObjectCollection.cs
- DesignOnlyAttribute.cs
- DelegateBodyWriter.cs
- WebBrowserSiteBase.cs
- XamlSerializerUtil.cs
- DBCommandBuilder.cs
- EllipticalNodeOperations.cs
- SoapServerMessage.cs
- FixedSchema.cs
- RelationalExpressions.cs
- CodeGenerator.cs
- SafeNativeMethods.cs
- DefaultTextStoreTextComposition.cs
- ReadingWritingEntityEventArgs.cs
- SingleObjectCollection.cs
- TargetConverter.cs
- hebrewshape.cs
- CommonDialog.cs
- DeviceContext.cs
- IPCCacheManager.cs
- PropertyMappingExceptionEventArgs.cs
- PeerCollaboration.cs
- GraphicsState.cs
- CapabilitiesRule.cs
- SettingsBase.cs
- Panel.cs
- ObjectDataSource.cs
- ExeConfigurationFileMap.cs
- HtmlElementEventArgs.cs
- DataSetMappper.cs
- FormViewDeletedEventArgs.cs
- Merger.cs
- GuidelineSet.cs
- _NestedSingleAsyncResult.cs
- MailMessageEventArgs.cs
- SimpleMailWebEventProvider.cs
- Type.cs
- SplayTreeNode.cs
- FileDialog.cs
- LoginUtil.cs
- XpsSerializationException.cs
- HotSpotCollectionEditor.cs
- ReachPageContentSerializer.cs
- DirectionalLight.cs
- TextEditorSelection.cs
- ProxyManager.cs
- ConnectionPoint.cs
- SqlUserDefinedAggregateAttribute.cs
- BoundingRectTracker.cs
- TdsParserSafeHandles.cs
- TextViewElement.cs
- AutomationPatternInfo.cs