Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataWeb / Design / system / Data / EntityModel / Emitters / SchemaTypeEmitter.cs / 1305376 / SchemaTypeEmitter.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
using System.CodeDom;
using System.Collections.Generic;
using System.Data.Metadata.Edm;
using System.Data.Services.Design;
namespace System.Data.EntityModel.Emitters
{
///
///
///
internal abstract class SchemaTypeEmitter : MetadataItemEmitter
{
#region Public Methods
public abstract CodeTypeDeclarationCollection EmitApiClass();
#endregion
#region Protected Methods
///
///
///
///
///
protected SchemaTypeEmitter(ClientApiGenerator generator, MetadataItem item)
: base(generator, item)
{
}
///
///
///
///
protected virtual void EmitTypeAttributes( CodeTypeDeclaration typeDecl )
{
Generator.AttributeEmitter.EmitTypeAttributes( this, typeDecl );
}
///
/// Emitter-specific validation: for SchemaTypeEmitter-derived classes, we
/// check the EdmItemCollection for other entities that have the same name
/// but differ in case
///
protected override void Validate()
{
Generator.VerifyLanguageCaseSensitiveCompatibilityForType(Item);
}
///
/// Add attributes to a type's CustomAttributes collection
///
/// The name of the type
/// The type to annotate
/// The additional attributes
protected void EmitTypeAttributes(string itemName, CodeTypeDeclaration typeDecl,
List additionalAttributes)
{
if (additionalAttributes != null && additionalAttributes.Count > 0)
{
try
{
typeDecl.CustomAttributes.AddRange(additionalAttributes.ToArray());
}
catch (ArgumentNullException e)
{
Generator.AddError(Strings.InvalidAttributeSuppliedForType(itemName),
ModelBuilderErrorCode.InvalidAttributeSuppliedForType,
EdmSchemaErrorSeverity.Error,
e);
}
}
EmitTypeAttributes(typeDecl);
}
///
/// Add interfaces to the type's list of BaseTypes
///
/// The name of the type
/// The type whose list of base types needs to be extended
/// The interfaces to add to the list of base types
protected void AddInterfaces(string itemName,
CodeTypeDeclaration typeDecl,
List additionalInterfaces)
{
if (additionalInterfaces != null)
{
try
{
foreach (Type interfaceType in additionalInterfaces)
{
typeDecl.BaseTypes.Add(new CodeTypeReference(interfaceType, CodeTypeReferenceOptions.GlobalReference));
}
}
catch (ArgumentNullException e)
{
Generator.AddError(Strings.InvalidInterfaceSuppliedForType(itemName),
ModelBuilderErrorCode.InvalidInterfaceSuppliedForType,
EdmSchemaErrorSeverity.Error,
e);
}
}
}
///
/// Add interfaces to the type's list of BaseTypes
///
/// The name of the type
/// The type to which members need to be added
/// The members to add
protected void AddMembers(string itemName, CodeTypeDeclaration typeDecl,
List additionalMembers)
{
if (additionalMembers != null && additionalMembers.Count > 0)
{
try
{
typeDecl.Members.AddRange(additionalMembers.ToArray());
}
catch (ArgumentNullException e)
{
Generator.AddError(Strings.InvalidMemberSuppliedForType(itemName),
ModelBuilderErrorCode.InvalidMemberSuppliedForType,
EdmSchemaErrorSeverity.Error,
e);
}
}
}
#endregion
#region Protected Properties
///
/// Gets the element that code is being emitted for.
///
internal new GlobalItem Item
{
get
{
return base.Item as GlobalItem;
}
}
internal void SetTypeVisibility(CodeTypeDeclaration typeDecl)
{
typeDecl.TypeAttributes &= ~System.Reflection.TypeAttributes.VisibilityMask;
typeDecl.TypeAttributes |= GetTypeAccessibilityValue(Item);
}
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
using System.CodeDom;
using System.Collections.Generic;
using System.Data.Metadata.Edm;
using System.Data.Services.Design;
namespace System.Data.EntityModel.Emitters
{
///
///
///
internal abstract class SchemaTypeEmitter : MetadataItemEmitter
{
#region Public Methods
public abstract CodeTypeDeclarationCollection EmitApiClass();
#endregion
#region Protected Methods
///
///
///
///
///
protected SchemaTypeEmitter(ClientApiGenerator generator, MetadataItem item)
: base(generator, item)
{
}
///
///
///
///
protected virtual void EmitTypeAttributes( CodeTypeDeclaration typeDecl )
{
Generator.AttributeEmitter.EmitTypeAttributes( this, typeDecl );
}
///
/// Emitter-specific validation: for SchemaTypeEmitter-derived classes, we
/// check the EdmItemCollection for other entities that have the same name
/// but differ in case
///
protected override void Validate()
{
Generator.VerifyLanguageCaseSensitiveCompatibilityForType(Item);
}
///
/// Add attributes to a type's CustomAttributes collection
///
/// The name of the type
/// The type to annotate
/// The additional attributes
protected void EmitTypeAttributes(string itemName, CodeTypeDeclaration typeDecl,
List additionalAttributes)
{
if (additionalAttributes != null && additionalAttributes.Count > 0)
{
try
{
typeDecl.CustomAttributes.AddRange(additionalAttributes.ToArray());
}
catch (ArgumentNullException e)
{
Generator.AddError(Strings.InvalidAttributeSuppliedForType(itemName),
ModelBuilderErrorCode.InvalidAttributeSuppliedForType,
EdmSchemaErrorSeverity.Error,
e);
}
}
EmitTypeAttributes(typeDecl);
}
///
/// Add interfaces to the type's list of BaseTypes
///
/// The name of the type
/// The type whose list of base types needs to be extended
/// The interfaces to add to the list of base types
protected void AddInterfaces(string itemName,
CodeTypeDeclaration typeDecl,
List additionalInterfaces)
{
if (additionalInterfaces != null)
{
try
{
foreach (Type interfaceType in additionalInterfaces)
{
typeDecl.BaseTypes.Add(new CodeTypeReference(interfaceType, CodeTypeReferenceOptions.GlobalReference));
}
}
catch (ArgumentNullException e)
{
Generator.AddError(Strings.InvalidInterfaceSuppliedForType(itemName),
ModelBuilderErrorCode.InvalidInterfaceSuppliedForType,
EdmSchemaErrorSeverity.Error,
e);
}
}
}
///
/// Add interfaces to the type's list of BaseTypes
///
/// The name of the type
/// The type to which members need to be added
/// The members to add
protected void AddMembers(string itemName, CodeTypeDeclaration typeDecl,
List additionalMembers)
{
if (additionalMembers != null && additionalMembers.Count > 0)
{
try
{
typeDecl.Members.AddRange(additionalMembers.ToArray());
}
catch (ArgumentNullException e)
{
Generator.AddError(Strings.InvalidMemberSuppliedForType(itemName),
ModelBuilderErrorCode.InvalidMemberSuppliedForType,
EdmSchemaErrorSeverity.Error,
e);
}
}
}
#endregion
#region Protected Properties
///
/// Gets the element that code is being emitted for.
///
internal new GlobalItem Item
{
get
{
return base.Item as GlobalItem;
}
}
internal void SetTypeVisibility(CodeTypeDeclaration typeDecl)
{
typeDecl.TypeAttributes &= ~System.Reflection.TypeAttributes.VisibilityMask;
typeDecl.TypeAttributes |= GetTypeAccessibilityValue(Item);
}
#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
- SqlNamer.cs
- TreeViewDesigner.cs
- ImpersonateTokenRef.cs
- isolationinterop.cs
- ZoneIdentityPermission.cs
- StringComparer.cs
- EllipseGeometry.cs
- SHA1Managed.cs
- EntityContainerAssociationSetEnd.cs
- DataRelationCollection.cs
- ObjectConverter.cs
- mda.cs
- AdvancedBindingEditor.cs
- NamespaceTable.cs
- FixedPage.cs
- FontCollection.cs
- Model3D.cs
- SecurityElement.cs
- FocusManager.cs
- AliasGenerator.cs
- Component.cs
- ControlsConfig.cs
- AdPostCacheSubstitution.cs
- XmlSchemaGroup.cs
- MetadataException.cs
- ShutDownListener.cs
- SafeThemeHandle.cs
- TextSyndicationContent.cs
- _SslStream.cs
- ByteKeyFrameCollection.cs
- ListManagerBindingsCollection.cs
- UxThemeWrapper.cs
- Page.cs
- VariableElement.cs
- Error.cs
- GroupBox.cs
- DataSourceCache.cs
- Int64.cs
- DocobjHost.cs
- XamlNamespaceHelper.cs
- FixedSOMPage.cs
- QueryStringHandler.cs
- DbParameterHelper.cs
- BatchWriter.cs
- InteropAutomationProvider.cs
- ShaderEffect.cs
- DuplicateWaitObjectException.cs
- Viewport3DVisual.cs
- ExtentCqlBlock.cs
- MILUtilities.cs
- BuildProviderCollection.cs
- Root.cs
- WebPartCatalogCloseVerb.cs
- NavigationPropertySingletonExpression.cs
- MappingException.cs
- OutOfProcStateClientManager.cs
- FixedFlowMap.cs
- ColorContextHelper.cs
- TextBlockAutomationPeer.cs
- ListControlStringCollectionEditor.cs
- Separator.cs
- Brush.cs
- Types.cs
- DataGridrowEditEndingEventArgs.cs
- ScrollBarRenderer.cs
- ConfigXmlDocument.cs
- IxmlLineInfo.cs
- LoadWorkflowCommand.cs
- TargetException.cs
- ParserExtension.cs
- HttpCapabilitiesSectionHandler.cs
- CommandField.cs
- RemotingServices.cs
- XmlEntityReference.cs
- ContentElement.cs
- InstanceCreationEditor.cs
- WindowsListViewGroupHelper.cs
- Decoder.cs
- TabOrder.cs
- WebControlAdapter.cs
- SqlClientPermission.cs
- DataRelationPropertyDescriptor.cs
- mediaeventshelper.cs
- UnitySerializationHolder.cs
- Configuration.cs
- DetailsViewModeEventArgs.cs
- NegotiationTokenAuthenticatorState.cs
- TemplateBamlTreeBuilder.cs
- InternalCache.cs
- JsonReader.cs
- Menu.cs
- EncodingInfo.cs
- WebServicesInteroperability.cs
- ExpressionParser.cs
- HttpGetProtocolImporter.cs
- HtmlControl.cs
- VisualStyleRenderer.cs
- _ContextAwareResult.cs
- ToolStripSeparatorRenderEventArgs.cs
- TextPattern.cs