Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataWeb / Design / system / Data / EntityModel / Emitters / AttributeEmitter.cs / 1 / AttributeEmitter.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
using System.CodeDom;
using System.Collections.Generic;
using System.Data.Services.Design;
using System.Data.Metadata.Edm;
using System.Diagnostics;
using System.Linq;
namespace System.Data.EntityModel.Emitters
{
///
/// Summary description for AttributeEmitter.
///
internal sealed class AttributeEmitter
{
TypeReference _typeReference;
internal TypeReference TypeReference
{
get { return _typeReference; }
}
internal AttributeEmitter(TypeReference typeReference)
{
_typeReference = typeReference;
}
///
/// The method to be called to create the type level attributes for the ItemTypeEmitter
///
/// The strongly typed emitter
/// The type declaration to add the attribues to.
public void EmitTypeAttributes(EntityTypeEmitter emitter, CodeTypeDeclaration typeDecl)
{
Debug.Assert(emitter != null, "emitter should not be null");
Debug.Assert(typeDecl != null, "typeDecl should not be null");
object[] keys = emitter.Item.KeyMembers.Select(km => (object) km.Name).ToArray();
typeDecl.CustomAttributes.Add(EmitSimpleAttribute(Utils.WebFrameworkCommonNamespace + "." + "DataServiceKeyAttribute", keys));
}
///
/// The method to be called to create the type level attributes for the StructuredTypeEmitter
///
/// The strongly typed emitter
/// The type declaration to add the attribues to.
public void EmitTypeAttributes(StructuredTypeEmitter emitter, CodeTypeDeclaration typeDecl)
{
Debug.Assert(emitter != null, "emitter should not be null");
Debug.Assert(typeDecl != null, "typeDecl should not be null");
// nothing to do here yet
}
///
/// The method to be called to create the type level attributes for the SchemaTypeEmitter
///
/// The strongly typed emitter
/// The type declaration to add the attribues to.
public void EmitTypeAttributes(SchemaTypeEmitter emitter, CodeTypeDeclaration typeDecl)
{
Debug.Assert(emitter != null, "emitter should not be null");
Debug.Assert(typeDecl != null, "typeDecl should not be null");
}
///
/// The method to be called to create the property level attributes for the PropertyEmitter
///
/// The strongly typed emitter
/// The type declaration to add the attribues to.
/// Additional attributes to emit
public void EmitPropertyAttributes(PropertyEmitter emitter,
CodeMemberProperty propertyDecl,
List additionalAttributes)
{
if (additionalAttributes != null && additionalAttributes.Count > 0)
{
try
{
propertyDecl.CustomAttributes.AddRange(additionalAttributes.ToArray());
}
catch (ArgumentNullException e)
{
emitter.Generator.AddError(Strings.InvalidAttributeSuppliedForProperty(emitter.Item.Name),
ModelBuilderErrorCode.InvalidAttributeSuppliedForProperty,
EdmSchemaErrorSeverity.Error,
e);
}
}
}
///
/// The method to be called to create the type level attributes for the NestedTypeEmitter
///
/// The strongly typed emitter
/// The type declaration to add the attribues to.
public void EmitTypeAttributes(ComplexTypeEmitter emitter, CodeTypeDeclaration typeDecl)
{
Debug.Assert(emitter != null, "emitter should not be null");
Debug.Assert(typeDecl != null, "typeDecl should not be null");
// not emitting System.Runtime.Serializaton.DataContractAttribute
// not emitting System.Serializable
}
#region Static Methods
///
///
///
///
///
///
public CodeAttributeDeclaration EmitSimpleAttribute(string attributeType, params object[] arguments)
{
CodeAttributeDeclaration attribute = new CodeAttributeDeclaration(TypeReference.FromString(attributeType, true));
AddAttributeArguments(attribute, arguments);
return attribute;
}
///
///
///
///
///
public static void AddAttributeArguments(CodeAttributeDeclaration attribute, object[] arguments)
{
foreach (object argument in arguments)
{
CodeExpression expression = argument as CodeExpression;
if (expression == null)
expression = new CodePrimitiveExpression(argument);
attribute.Arguments.Add(new CodeAttributeArgument(expression));
}
}
///
/// Adds an XmlIgnore attribute to the given property declaration. This is
/// used to explicitly skip certain properties during XML serialization.
///
/// the property to mark with XmlIgnore
public void AddIgnoreAttributes(CodeMemberProperty propertyDecl)
{
// not emitting System.Xml.Serialization.XmlIgnoreAttribute
// not emitting System.Xml.Serialization.SoapIgnoreAttribute
}
///
/// Adds an Browsable(false) attribute to the given property declaration.
/// This is used to explicitly avoid display property in the PropertyGrid.
///
/// the property to mark with XmlIgnore
public void AddBrowsableAttribute(CodeMemberProperty propertyDecl)
{
// not emitting System.ComponentModel.BrowsableAttribute
}
#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.Services.Design;
using System.Data.Metadata.Edm;
using System.Diagnostics;
using System.Linq;
namespace System.Data.EntityModel.Emitters
{
///
/// Summary description for AttributeEmitter.
///
internal sealed class AttributeEmitter
{
TypeReference _typeReference;
internal TypeReference TypeReference
{
get { return _typeReference; }
}
internal AttributeEmitter(TypeReference typeReference)
{
_typeReference = typeReference;
}
///
/// The method to be called to create the type level attributes for the ItemTypeEmitter
///
/// The strongly typed emitter
/// The type declaration to add the attribues to.
public void EmitTypeAttributes(EntityTypeEmitter emitter, CodeTypeDeclaration typeDecl)
{
Debug.Assert(emitter != null, "emitter should not be null");
Debug.Assert(typeDecl != null, "typeDecl should not be null");
object[] keys = emitter.Item.KeyMembers.Select(km => (object) km.Name).ToArray();
typeDecl.CustomAttributes.Add(EmitSimpleAttribute(Utils.WebFrameworkCommonNamespace + "." + "DataServiceKeyAttribute", keys));
}
///
/// The method to be called to create the type level attributes for the StructuredTypeEmitter
///
/// The strongly typed emitter
/// The type declaration to add the attribues to.
public void EmitTypeAttributes(StructuredTypeEmitter emitter, CodeTypeDeclaration typeDecl)
{
Debug.Assert(emitter != null, "emitter should not be null");
Debug.Assert(typeDecl != null, "typeDecl should not be null");
// nothing to do here yet
}
///
/// The method to be called to create the type level attributes for the SchemaTypeEmitter
///
/// The strongly typed emitter
/// The type declaration to add the attribues to.
public void EmitTypeAttributes(SchemaTypeEmitter emitter, CodeTypeDeclaration typeDecl)
{
Debug.Assert(emitter != null, "emitter should not be null");
Debug.Assert(typeDecl != null, "typeDecl should not be null");
}
///
/// The method to be called to create the property level attributes for the PropertyEmitter
///
/// The strongly typed emitter
/// The type declaration to add the attribues to.
/// Additional attributes to emit
public void EmitPropertyAttributes(PropertyEmitter emitter,
CodeMemberProperty propertyDecl,
List additionalAttributes)
{
if (additionalAttributes != null && additionalAttributes.Count > 0)
{
try
{
propertyDecl.CustomAttributes.AddRange(additionalAttributes.ToArray());
}
catch (ArgumentNullException e)
{
emitter.Generator.AddError(Strings.InvalidAttributeSuppliedForProperty(emitter.Item.Name),
ModelBuilderErrorCode.InvalidAttributeSuppliedForProperty,
EdmSchemaErrorSeverity.Error,
e);
}
}
}
///
/// The method to be called to create the type level attributes for the NestedTypeEmitter
///
/// The strongly typed emitter
/// The type declaration to add the attribues to.
public void EmitTypeAttributes(ComplexTypeEmitter emitter, CodeTypeDeclaration typeDecl)
{
Debug.Assert(emitter != null, "emitter should not be null");
Debug.Assert(typeDecl != null, "typeDecl should not be null");
// not emitting System.Runtime.Serializaton.DataContractAttribute
// not emitting System.Serializable
}
#region Static Methods
///
///
///
///
///
///
public CodeAttributeDeclaration EmitSimpleAttribute(string attributeType, params object[] arguments)
{
CodeAttributeDeclaration attribute = new CodeAttributeDeclaration(TypeReference.FromString(attributeType, true));
AddAttributeArguments(attribute, arguments);
return attribute;
}
///
///
///
///
///
public static void AddAttributeArguments(CodeAttributeDeclaration attribute, object[] arguments)
{
foreach (object argument in arguments)
{
CodeExpression expression = argument as CodeExpression;
if (expression == null)
expression = new CodePrimitiveExpression(argument);
attribute.Arguments.Add(new CodeAttributeArgument(expression));
}
}
///
/// Adds an XmlIgnore attribute to the given property declaration. This is
/// used to explicitly skip certain properties during XML serialization.
///
/// the property to mark with XmlIgnore
public void AddIgnoreAttributes(CodeMemberProperty propertyDecl)
{
// not emitting System.Xml.Serialization.XmlIgnoreAttribute
// not emitting System.Xml.Serialization.SoapIgnoreAttribute
}
///
/// Adds an Browsable(false) attribute to the given property declaration.
/// This is used to explicitly avoid display property in the PropertyGrid.
///
/// the property to mark with XmlIgnore
public void AddBrowsableAttribute(CodeMemberProperty propertyDecl)
{
// not emitting System.ComponentModel.BrowsableAttribute
}
#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
- SqlCachedBuffer.cs
- SafeProcessHandle.cs
- ContextMenu.cs
- WebPartHeaderCloseVerb.cs
- Queue.cs
- DataServiceOperationContext.cs
- PageClientProxyGenerator.cs
- ColumnResult.cs
- FlowDocumentFormatter.cs
- FileRegion.cs
- ProviderConnectionPointCollection.cs
- Profiler.cs
- DeclarativeCatalogPart.cs
- VirtualizingPanel.cs
- HtmlPhoneCallAdapter.cs
- XsdDuration.cs
- ProvideValueServiceProvider.cs
- DeviceContexts.cs
- WindowsStatusBar.cs
- OSFeature.cs
- GetImportedCardRequest.cs
- MatrixKeyFrameCollection.cs
- HtmlElementErrorEventArgs.cs
- SpecularMaterial.cs
- StateManager.cs
- OutputCacheSettings.cs
- InstanceHandleReference.cs
- NamespaceEmitter.cs
- UTF7Encoding.cs
- IgnoreFlushAndCloseStream.cs
- ExpandableObjectConverter.cs
- MatrixTransform.cs
- BaseDataListPage.cs
- WebEventTraceProvider.cs
- Executor.cs
- MobileSysDescriptionAttribute.cs
- QueryValue.cs
- MarkupWriter.cs
- DesignerTransactionCloseEvent.cs
- DataBinder.cs
- HostingEnvironmentException.cs
- UntrustedRecipientException.cs
- DataStorage.cs
- CodeObject.cs
- CmsInterop.cs
- AliasedExpr.cs
- Nullable.cs
- HorizontalAlignConverter.cs
- Collection.cs
- OdbcError.cs
- SelectionProcessor.cs
- AdapterSwitches.cs
- SafeMILHandle.cs
- ConfigXmlSignificantWhitespace.cs
- AdornerLayer.cs
- XmlSchemaExporter.cs
- XamlTypeMapperSchemaContext.cs
- MetadataException.cs
- XmlSerializerNamespaces.cs
- PagerSettings.cs
- StrongName.cs
- CredentialSelector.cs
- GenericTypeParameterBuilder.cs
- XmlSerializerOperationBehavior.cs
- TargetInvocationException.cs
- SqlCaseSimplifier.cs
- HtmlInputHidden.cs
- Types.cs
- _SslSessionsCache.cs
- ValidationSummary.cs
- SmiRequestExecutor.cs
- AdornerHitTestResult.cs
- XmlQualifiedNameTest.cs
- WebUtil.cs
- BitSet.cs
- WebResponse.cs
- TaskFileService.cs
- ReadOnlyCollectionBase.cs
- InvalidWorkflowException.cs
- SharedPerformanceCounter.cs
- SendParametersContent.cs
- QuaternionAnimationBase.cs
- RotationValidation.cs
- SizeF.cs
- GridToolTip.cs
- StoreContentChangedEventArgs.cs
- ViewGenerator.cs
- DetailsViewDeletedEventArgs.cs
- PrimitiveXmlSerializers.cs
- CurrentChangingEventArgs.cs
- OpenFileDialog.cs
- ListViewItemEventArgs.cs
- LockedHandleGlyph.cs
- DBConnectionString.cs
- NullableBoolConverter.cs
- WebPartVerb.cs
- XmlLanguage.cs
- LayoutExceptionEventArgs.cs
- HttpResponseMessageProperty.cs
- StaticFileHandler.cs