Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / Metadata / Edm / ComplexType.cs / 1 / 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
- EnlistmentTraceIdentifier.cs
- DiscoveryOperationContext.cs
- WorkflowDebuggerSteppingAttribute.cs
- TransformerInfo.cs
- BaseParser.cs
- StylusPointProperty.cs
- Resources.Designer.cs
- RelationshipEntry.cs
- GridViewColumnCollectionChangedEventArgs.cs
- XmlNamedNodeMap.cs
- StateManagedCollection.cs
- DisposableCollectionWrapper.cs
- PropertyMappingExceptionEventArgs.cs
- DataColumnChangeEvent.cs
- TrackBarRenderer.cs
- Size.cs
- ReversePositionQuery.cs
- SelectionRangeConverter.cs
- XamlDebuggerXmlReader.cs
- DataGridColumnHeadersPresenterAutomationPeer.cs
- Point3DCollectionConverter.cs
- ExtenderProvidedPropertyAttribute.cs
- StrongNamePublicKeyBlob.cs
- SqlDataSourceFilteringEventArgs.cs
- UndirectedGraph.cs
- RSAOAEPKeyExchangeDeformatter.cs
- ArgIterator.cs
- CacheVirtualItemsEvent.cs
- Attributes.cs
- ExpressionValueEditor.cs
- TrackBar.cs
- ListBox.cs
- MultipartIdentifier.cs
- RadioButtonDesigner.cs
- XNodeNavigator.cs
- SqlTrackingService.cs
- FileChangesMonitor.cs
- UIHelper.cs
- FlowLayoutSettings.cs
- PreservationFileReader.cs
- SmuggledIUnknown.cs
- ServiceActivationException.cs
- CorrelationKeyCalculator.cs
- EntityDataSourceState.cs
- ObjectSecurity.cs
- PersonalizationDictionary.cs
- SelectionGlyph.cs
- SHA256.cs
- VariantWrapper.cs
- Trace.cs
- LogArchiveSnapshot.cs
- XDRSchema.cs
- FrameSecurityDescriptor.cs
- CuspData.cs
- DataGridViewTextBoxCell.cs
- ShapingWorkspace.cs
- DataGridRelationshipRow.cs
- xmlsaver.cs
- BulletedList.cs
- ConcurrentStack.cs
- BitmapMetadataBlob.cs
- DropSource.cs
- ComponentManagerBroker.cs
- OrderedDictionaryStateHelper.cs
- LassoHelper.cs
- sortedlist.cs
- XmlSchemaGroupRef.cs
- CheckoutException.cs
- DataProtection.cs
- TypeLoadException.cs
- dbenumerator.cs
- FilePrompt.cs
- ToolStripDropDownClosedEventArgs.cs
- BuiltInPermissionSets.cs
- OutputCacheEntry.cs
- FormsAuthentication.cs
- FixedNode.cs
- ReferencedAssembly.cs
- RelatedCurrencyManager.cs
- RequestCachePolicy.cs
- OracleConnectionStringBuilder.cs
- _HelperAsyncResults.cs
- XsdBuildProvider.cs
- COM2IDispatchConverter.cs
- ProtocolsConfigurationHandler.cs
- SiteMapPathDesigner.cs
- TypeUnloadedException.cs
- ListContractAdapter.cs
- MailWebEventProvider.cs
- WindowsTokenRoleProvider.cs
- DataStorage.cs
- DataListItem.cs
- UnsafeNativeMethodsPenimc.cs
- CodePropertyReferenceExpression.cs
- XamlClipboardData.cs
- OutputScopeManager.cs
- TableLayoutPanelCellPosition.cs
- NativeCppClassAttribute.cs
- ButtonBase.cs
- SqlMethodAttribute.cs