Code:
/ 4.0 / 4.0 / 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.
//----------------------------------------------------------------------
//
// 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
- ToolboxItemCollection.cs
- ObjectConverter.cs
- ThrowHelper.cs
- backend.cs
- RegisteredExpandoAttribute.cs
- ScriptingWebServicesSectionGroup.cs
- RemoteX509AsymmetricSecurityKey.cs
- SiteMapNodeCollection.cs
- MessageLogTraceRecord.cs
- UnsafeNativeMethodsPenimc.cs
- WriteableBitmap.cs
- AutomationPeer.cs
- TransformProviderWrapper.cs
- NonBatchDirectoryCompiler.cs
- TeredoHelper.cs
- ConnectionStringsExpressionBuilder.cs
- FlowDocumentScrollViewer.cs
- SoapConverter.cs
- GeneratedContractType.cs
- HitTestResult.cs
- MaterialCollection.cs
- GestureRecognitionResult.cs
- JsonClassDataContract.cs
- HttpTransportBindingElement.cs
- DropShadowEffect.cs
- FixedTextContainer.cs
- BuildManagerHost.cs
- DockPatternIdentifiers.cs
- XmlException.cs
- BufferBuilder.cs
- SocketInformation.cs
- DocumentPaginator.cs
- ContentType.cs
- ZipIOLocalFileHeader.cs
- OuterGlowBitmapEffect.cs
- VirtualPath.cs
- EpmTargetPathSegment.cs
- UnsafeNativeMethods.cs
- AssemblyNameProxy.cs
- SqlReorderer.cs
- RelationHandler.cs
- safesecurityhelperavalon.cs
- SiteIdentityPermission.cs
- EventMappingSettingsCollection.cs
- ContentElement.cs
- PolyQuadraticBezierSegment.cs
- BasicDesignerLoader.cs
- StrongName.cs
- HtmlImage.cs
- CheckedListBox.cs
- DataProtection.cs
- CngProperty.cs
- Transform.cs
- XmlSchemaSequence.cs
- AffineTransform3D.cs
- DataGridViewColumnConverter.cs
- LiteralControl.cs
- Stream.cs
- DetailsViewRowCollection.cs
- SortedList.cs
- regiisutil.cs
- StickyNote.cs
- XmlNodeWriter.cs
- CrossAppDomainChannel.cs
- DoubleCollectionConverter.cs
- PersonalizationAdministration.cs
- UnionExpr.cs
- MimeTypePropertyAttribute.cs
- MemberDescriptor.cs
- DotExpr.cs
- StoreItemCollection.cs
- BindingValueChangedEventArgs.cs
- ResourceDictionaryCollection.cs
- AttachedPropertyInfo.cs
- SignatureDescription.cs
- SerializerProvider.cs
- StylusPointPropertyId.cs
- Point3DIndependentAnimationStorage.cs
- NullReferenceException.cs
- Rectangle.cs
- SequenceQuery.cs
- IntAverageAggregationOperator.cs
- ConfigurationException.cs
- XmlCountingReader.cs
- ValueSerializer.cs
- CompressionTransform.cs
- FontFamilyConverter.cs
- XmlSchemaFacet.cs
- Action.cs
- AccessedThroughPropertyAttribute.cs
- ModuleBuilder.cs
- TypeConvertions.cs
- TransactionManager.cs
- ScrollEventArgs.cs
- LocalizabilityAttribute.cs
- DataSourceControl.cs
- ToggleButtonAutomationPeer.cs
- EdmItemCollection.cs
- PointAnimationClockResource.cs
- Utilities.cs