Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Metadata / Edm / CollectionType.cs / 1305376 / CollectionType.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Text;
namespace System.Data.Metadata.Edm
{
///
/// Represents the Edm Collection Type
///
public sealed class CollectionType : EdmType
{
#region Constructors
///
/// The constructor for constructing a CollectionType object with the element type it contains
///
/// The element type that this collection type contains
/// Thrown if the argument elementType is null
internal CollectionType(EdmType elementType)
: this(TypeUsage.Create(elementType))
{
this.DataSpace = elementType.DataSpace;
}
///
/// The constructor for constructing a CollectionType object with the element type (as a TypeUsage) it contains
///
/// The element type that this collection type contains
/// Thrown if the argument elementType is null
internal CollectionType(TypeUsage elementType)
: base(GetIdentity(EntityUtil.GenericCheckArgumentNull(elementType, "elementType")),
EdmConstants.TransientNamespace, elementType.EdmType.DataSpace)
{
_typeUsage = elementType;
SetReadOnly();
}
#endregion
#region Fields
private readonly TypeUsage _typeUsage;
#endregion
#region Properties
///
/// Returns the kind of the type
///
public override BuiltInTypeKind BuiltInTypeKind { get { return BuiltInTypeKind.CollectionType; } }
///
/// The type of the element that this collection type contains
///
[MetadataProperty(BuiltInTypeKind.TypeUsage, false)]
public TypeUsage TypeUsage
{
get
{
return _typeUsage;
}
}
#endregion
#region Methods
///
/// Constructs the name of the collection type
///
/// The typeusage for the element type that this collection type refers to
/// The identity of the resulting collection type
private static string GetIdentity(TypeUsage typeUsage)
{
StringBuilder builder = new StringBuilder(50);
builder.Append("collection[");
typeUsage.BuildIdentity(builder);
builder.Append("]");
return builder.ToString();
}
///
/// Override EdmEquals to support value comparison of TypeUsage property
///
///
///
internal override bool EdmEquals(MetadataItem item)
{
// short-circuit if this and other are reference equivalent
if (Object.ReferenceEquals(this, item)) { return true; }
// check type of item
if (null == item || BuiltInTypeKind.CollectionType != item.BuiltInTypeKind) { return false; }
CollectionType other = (CollectionType)item;
// compare type usage
return this.TypeUsage.EdmEquals(other.TypeUsage);
}
#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
- EpmContentDeSerializerBase.cs
- WMICapabilities.cs
- XmlAttributes.cs
- RelationshipEntry.cs
- mediapermission.cs
- BaseCodePageEncoding.cs
- dbenumerator.cs
- DeferredElementTreeState.cs
- InstanceData.cs
- ImageProxy.cs
- Mappings.cs
- AsymmetricAlgorithm.cs
- IResourceProvider.cs
- DrawListViewItemEventArgs.cs
- DataSetUtil.cs
- DynamicMethod.cs
- TypedReference.cs
- StringCollection.cs
- VisualCollection.cs
- ReadOnlyHierarchicalDataSource.cs
- DES.cs
- InputManager.cs
- KeyValueSerializer.cs
- FragmentQueryProcessor.cs
- DataListAutoFormat.cs
- PresentationTraceSources.cs
- EntityDataSourceUtil.cs
- TextRangeProviderWrapper.cs
- ConfigurationSectionCollection.cs
- OperandQuery.cs
- CodeMethodInvokeExpression.cs
- DoubleLinkList.cs
- MetadataPropertyCollection.cs
- WebServiceFault.cs
- EdmComplexTypeAttribute.cs
- ControlPropertyNameConverter.cs
- Quaternion.cs
- GACIdentityPermission.cs
- TextUtf8RawTextWriter.cs
- MimePart.cs
- RowVisual.cs
- ColumnResizeUndoUnit.cs
- SystemFonts.cs
- DictionaryCustomTypeDescriptor.cs
- QualifiedCellIdBoolean.cs
- Point4D.cs
- OdbcConnectionString.cs
- CardSpaceSelector.cs
- Int16KeyFrameCollection.cs
- Timeline.cs
- CopyNodeSetAction.cs
- DispatcherProcessingDisabled.cs
- ColumnHeader.cs
- DataGridItemCollection.cs
- CharEnumerator.cs
- SafeViewOfFileHandle.cs
- ListControlActionList.cs
- DataService.cs
- ISAPIWorkerRequest.cs
- SqlDataReader.cs
- ContextDataSource.cs
- TreeIterators.cs
- WhitespaceRuleLookup.cs
- CodeSubDirectoriesCollection.cs
- ConfigXmlSignificantWhitespace.cs
- RoleBoolean.cs
- NativeCppClassAttribute.cs
- ELinqQueryState.cs
- SqlReferenceCollection.cs
- WebBrowserProgressChangedEventHandler.cs
- WindowsListViewItemCheckBox.cs
- translator.cs
- ProjectionPruner.cs
- SqlReorderer.cs
- AccessKeyManager.cs
- LoginName.cs
- Separator.cs
- CodeEventReferenceExpression.cs
- MenuItemCollectionEditorDialog.cs
- __ConsoleStream.cs
- LineVisual.cs
- TypeHelpers.cs
- CheckBox.cs
- BlockUIContainer.cs
- XmlHierarchicalDataSourceView.cs
- BitmapMetadata.cs
- validation.cs
- Vector3DConverter.cs
- TransformConverter.cs
- StandardToolWindows.cs
- ParameterEditorUserControl.cs
- ReferenceEqualityComparer.cs
- MemberListBinding.cs
- JsonUriDataContract.cs
- DayRenderEvent.cs
- AsymmetricAlgorithm.cs
- log.cs
- Config.cs
- Span.cs
- AccessDataSource.cs