Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataEntity / System / Data / Metadata / Edm / ComplexType.cs / 5 / ComplexType.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....], [....] //--------------------------------------------------------------------- using System.Data.Common; using System.Threading; using System.Diagnostics; namespace System.Data.Metadata.Edm { ////// Represent the Edm Complex Type /// public class ComplexType : StructuralType { #region Constructors ////// Initializes a new instance of Complex Type with the given properties /// /// The name of the complex type /// The namespace name of the type /// The version of this type /// dataSpace in which this ComplexType belongs to ///If either name, namespace or version arguments are null internal ComplexType(string name, string namespaceName, DataSpace dataSpace) : base(name, namespaceName, dataSpace) { } ////// Initializes a new instance of Complex Type - required for bootstraping code /// internal ComplexType() { // No initialization of item attributes in here, it's used as a pass thru in the case for delay population // of item attributes } #endregion #region Fields private ReadOnlyMetadataCollection_properties; #endregion #region Properties /// /// Returns the kind of the type /// public override BuiltInTypeKind BuiltInTypeKind { get { return BuiltInTypeKind.ComplexType; } } ////// Returns just the properties from the collection /// of members on this type /// public ReadOnlyMetadataCollectionProperties { get { Debug.Assert(IsReadOnly, "this is a wrapper around this.Members, don't call it during metadata loading, only call it after the metadata is set to readonly"); if (null == _properties) { Interlocked.CompareExchange(ref _properties, new FilteredReadOnlyMetadataCollection ( this.Members, Helper.IsEdmProperty), null); } return _properties; } } #endregion #region Methods /// /// 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 ///Thrown if the member is not a EdmProperty internal override void ValidateMemberForAdd(EdmMember member) { if (!Helper.IsEdmProperty(member) && !Helper.IsNavigationProperty(member)) { throw EntityUtil.ComplexTypeInvalidMembers(); } } #endregion } internal sealed class ClrComplexType : ComplexType { ///cached CLR type handle, allowing the Type reference to be GC'd private readonly System.RuntimeTypeHandle _type; ///cached dynamic method to construct a CLR instance private Delegate _constructor; private readonly string _cspaceTypeName; ////// Initializes a new instance of Complex Type with properties from the type. /// /// The CLR type to construct from internal ClrComplexType(Type clrType, string cspaceNamespaceName, string cspaceTypeName) : base(EntityUtil.GenericCheckArgumentNull(clrType, "clrType").Name, clrType.Namespace ?? string.Empty, DataSpace.OSpace) { System.Diagnostics.Debug.Assert(!String.IsNullOrEmpty(cspaceNamespaceName) && !String.IsNullOrEmpty(cspaceTypeName), "Mapping information must never be null"); _type = clrType.TypeHandle; _cspaceTypeName = cspaceNamespaceName + "." + cspaceTypeName; this.Abstract = clrType.IsAbstract; } internal static ClrComplexType CreateReadonlyClrComplexType(Type clrType, string cspaceNamespaceName, string cspaceTypeName) { ClrComplexType type = new ClrComplexType(clrType, cspaceNamespaceName, cspaceTypeName); type.SetReadOnly(); return type; } ///cached dynamic method to construct a CLR instance internal Delegate Constructor { get { return _constructor; } set { // It doesn't matter which delegate wins, but only one should be jitted Interlocked.CompareExchange(ref _constructor, value, null); } } ////// internal override System.Type ClrType { get { return Type.GetTypeFromHandle(_type); } } internal string CSpaceTypeName { get { return _cspaceTypeName; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....], [....] //--------------------------------------------------------------------- using System.Data.Common; using System.Threading; using System.Diagnostics; namespace System.Data.Metadata.Edm { ////// Represent the Edm Complex Type /// public class ComplexType : StructuralType { #region Constructors ////// Initializes a new instance of Complex Type with the given properties /// /// The name of the complex type /// The namespace name of the type /// The version of this type /// dataSpace in which this ComplexType belongs to ///If either name, namespace or version arguments are null internal ComplexType(string name, string namespaceName, DataSpace dataSpace) : base(name, namespaceName, dataSpace) { } ////// Initializes a new instance of Complex Type - required for bootstraping code /// internal ComplexType() { // No initialization of item attributes in here, it's used as a pass thru in the case for delay population // of item attributes } #endregion #region Fields private ReadOnlyMetadataCollection_properties; #endregion #region Properties /// /// Returns the kind of the type /// public override BuiltInTypeKind BuiltInTypeKind { get { return BuiltInTypeKind.ComplexType; } } ////// Returns just the properties from the collection /// of members on this type /// public ReadOnlyMetadataCollectionProperties { get { Debug.Assert(IsReadOnly, "this is a wrapper around this.Members, don't call it during metadata loading, only call it after the metadata is set to readonly"); if (null == _properties) { Interlocked.CompareExchange(ref _properties, new FilteredReadOnlyMetadataCollection ( this.Members, Helper.IsEdmProperty), null); } return _properties; } } #endregion #region Methods /// /// 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 ///Thrown if the member is not a EdmProperty internal override void ValidateMemberForAdd(EdmMember member) { if (!Helper.IsEdmProperty(member) && !Helper.IsNavigationProperty(member)) { throw EntityUtil.ComplexTypeInvalidMembers(); } } #endregion } internal sealed class ClrComplexType : ComplexType { ///cached CLR type handle, allowing the Type reference to be GC'd private readonly System.RuntimeTypeHandle _type; ///cached dynamic method to construct a CLR instance private Delegate _constructor; private readonly string _cspaceTypeName; ////// Initializes a new instance of Complex Type with properties from the type. /// /// The CLR type to construct from internal ClrComplexType(Type clrType, string cspaceNamespaceName, string cspaceTypeName) : base(EntityUtil.GenericCheckArgumentNull(clrType, "clrType").Name, clrType.Namespace ?? string.Empty, DataSpace.OSpace) { System.Diagnostics.Debug.Assert(!String.IsNullOrEmpty(cspaceNamespaceName) && !String.IsNullOrEmpty(cspaceTypeName), "Mapping information must never be null"); _type = clrType.TypeHandle; _cspaceTypeName = cspaceNamespaceName + "." + cspaceTypeName; this.Abstract = clrType.IsAbstract; } internal static ClrComplexType CreateReadonlyClrComplexType(Type clrType, string cspaceNamespaceName, string cspaceTypeName) { ClrComplexType type = new ClrComplexType(clrType, cspaceNamespaceName, cspaceTypeName); type.SetReadOnly(); return type; } ///cached dynamic method to construct a CLR instance internal Delegate Constructor { get { return _constructor; } set { // It doesn't matter which delegate wins, but only one should be jitted Interlocked.CompareExchange(ref _constructor, value, null); } } ////// internal override System.Type ClrType { get { return Type.GetTypeFromHandle(_type); } } internal string CSpaceTypeName { get { return _cspaceTypeName; } } } } // 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
- QueuePathEditor.cs
- EmbeddedMailObject.cs
- ToolStripSplitButton.cs
- NumberSubstitution.cs
- Typography.cs
- Geometry3D.cs
- IPAddress.cs
- ResizeGrip.cs
- DbProviderFactory.cs
- ObjectDataSource.cs
- PathGradientBrush.cs
- PerformanceCounterLib.cs
- CommonProperties.cs
- HyperLinkColumn.cs
- App.cs
- EntityCommandDefinition.cs
- DrawItemEvent.cs
- GridViewDeleteEventArgs.cs
- ResourcePermissionBaseEntry.cs
- ToolTip.cs
- JoinCqlBlock.cs
- FileSystemInfo.cs
- _emptywebproxy.cs
- CapabilitiesPattern.cs
- ContextProperty.cs
- ListViewCancelEventArgs.cs
- LineServicesCallbacks.cs
- DocumentPaginator.cs
- ComponentGuaranteesAttribute.cs
- ListSortDescriptionCollection.cs
- Vector3DKeyFrameCollection.cs
- SimpleApplicationHost.cs
- TypeValidationEventArgs.cs
- OracleConnectionFactory.cs
- AttachedPropertyBrowsableAttribute.cs
- RotateTransform3D.cs
- RSAPKCS1SignatureDeformatter.cs
- VisualState.cs
- UnsafeNetInfoNativeMethods.cs
- HttpHostedTransportConfiguration.cs
- NamespaceMapping.cs
- FontDriver.cs
- DataGridViewRowsRemovedEventArgs.cs
- Action.cs
- EdmSchemaAttribute.cs
- StringArrayEditor.cs
- BindingMemberInfo.cs
- TraceLevelStore.cs
- TypeCodeDomSerializer.cs
- NumericUpDown.cs
- _AcceptOverlappedAsyncResult.cs
- BadImageFormatException.cs
- MetaType.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- XPathArrayIterator.cs
- BitmapDownload.cs
- ConfigXmlWhitespace.cs
- XmlWellformedWriter.cs
- DataRowChangeEvent.cs
- CompModHelpers.cs
- ConnectionOrientedTransportManager.cs
- ClientSideQueueItem.cs
- DataGridViewEditingControlShowingEventArgs.cs
- SafeReversePInvokeHandle.cs
- OleDbPermission.cs
- OdbcParameter.cs
- ConstructorNeedsTagAttribute.cs
- ContourSegment.cs
- BufferBuilder.cs
- CalculatedColumn.cs
- WaitHandleCannotBeOpenedException.cs
- DeviceSpecificDesigner.cs
- KerberosRequestorSecurityTokenAuthenticator.cs
- StringBuilder.cs
- HttpCacheParams.cs
- AudioDeviceOut.cs
- DetailsViewPagerRow.cs
- GPRECTF.cs
- XmlSortKeyAccumulator.cs
- KeysConverter.cs
- WebDescriptionAttribute.cs
- FlowDocumentFormatter.cs
- WebPartEventArgs.cs
- CalendarTable.cs
- BuildManager.cs
- URI.cs
- EdmProperty.cs
- DeleteStoreRequest.cs
- EpmSyndicationContentDeSerializer.cs
- List.cs
- BinaryUtilClasses.cs
- AdvancedBindingEditor.cs
- CommonObjectSecurity.cs
- Adorner.cs
- WebPartConnectionsCancelEventArgs.cs
- wmiprovider.cs
- DependencyObjectPropertyDescriptor.cs
- RequestResizeEvent.cs
- BasePropertyDescriptor.cs
- DataStreamFromComStream.cs