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
- WebAdminConfigurationHelper.cs
- D3DImage.cs
- TraceListener.cs
- StylusEditingBehavior.cs
- securitymgrsite.cs
- ScriptResourceAttribute.cs
- ConversionValidationRule.cs
- ConsoleKeyInfo.cs
- SqlConnection.cs
- Semaphore.cs
- Pool.cs
- RangeValidator.cs
- HelpProvider.cs
- ToolStripHighContrastRenderer.cs
- XmlCompatibilityReader.cs
- Quaternion.cs
- KeySplineConverter.cs
- ThicknessAnimationBase.cs
- CompositeFontParser.cs
- BufferedStream2.cs
- CompilerResults.cs
- UrlAuthFailedErrorFormatter.cs
- DebuggerAttributes.cs
- AsymmetricAlgorithm.cs
- AtlasWeb.Designer.cs
- RootBrowserWindowAutomationPeer.cs
- CompilerParameters.cs
- TrackingMemoryStream.cs
- MachineSettingsSection.cs
- ProjectedWrapper.cs
- metrodevice.cs
- HtmlTableRowCollection.cs
- RawStylusInputReport.cs
- DoubleAnimation.cs
- DbConnectionFactory.cs
- DataGridViewControlCollection.cs
- WindowsTokenRoleProvider.cs
- BaseValidator.cs
- GenerateHelper.cs
- SqlDelegatedTransaction.cs
- Errors.cs
- mediaeventargs.cs
- TimeManager.cs
- PartialCachingAttribute.cs
- ServerIdentity.cs
- UnsafeNativeMethods.cs
- StackOverflowException.cs
- MexNamedPipeBindingElement.cs
- OpCodes.cs
- SamlSubjectStatement.cs
- SqlUnionizer.cs
- PerformanceCounter.cs
- ApplicationCommands.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- SoapSchemaImporter.cs
- MultiView.cs
- ToolStripItemRenderEventArgs.cs
- PenLineJoinValidation.cs
- EventPrivateKey.cs
- ImageDrawing.cs
- SoapProtocolImporter.cs
- BitmapMetadataBlob.cs
- AssertFilter.cs
- AttributeSetAction.cs
- ProxyWebPartManager.cs
- MulticastOption.cs
- SoapElementAttribute.cs
- WindowsBrush.cs
- UnmanagedMarshal.cs
- XamlParser.cs
- DBAsyncResult.cs
- ArgumentValue.cs
- StorageSetMapping.cs
- SerializationEventsCache.cs
- ListSourceHelper.cs
- BitmapCodecInfoInternal.cs
- EntityDataSourceState.cs
- WebBrowserUriTypeConverter.cs
- VisualProxy.cs
- GreenMethods.cs
- PEFileEvidenceFactory.cs
- WindowsIPAddress.cs
- InvokeSchedule.cs
- PipeStream.cs
- SQLBytes.cs
- RenderingBiasValidation.cs
- _TransmitFileOverlappedAsyncResult.cs
- DocComment.cs
- SqlCacheDependencyDatabaseCollection.cs
- DropDownList.cs
- ContainerTracking.cs
- EdmValidator.cs
- TextEditorContextMenu.cs
- ScriptResourceHandler.cs
- DoubleLinkList.cs
- CapabilitiesUse.cs
- XmlEncodedRawTextWriter.cs
- PartitionResolver.cs
- DetailsViewRowCollection.cs
- UIElementHelper.cs