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
- ContainerAction.cs
- OdbcCommand.cs
- SaveFileDialog.cs
- SoundPlayer.cs
- SizeAnimationBase.cs
- EnumType.cs
- _KerberosClient.cs
- CacheChildrenQuery.cs
- DataKeyArray.cs
- HttpModuleAction.cs
- RegexRunner.cs
- AccessControlEntry.cs
- DescriptionAttribute.cs
- FtpCachePolicyElement.cs
- EntityCollection.cs
- SoundPlayer.cs
- ButtonStandardAdapter.cs
- LoginName.cs
- ArgumentOutOfRangeException.cs
- OleDbConnection.cs
- HtmlControlPersistable.cs
- AutoCompleteStringCollection.cs
- TileModeValidation.cs
- SettingsBase.cs
- ValueSerializer.cs
- Soap.cs
- ClassicBorderDecorator.cs
- ByteConverter.cs
- filewebresponse.cs
- diagnosticsswitches.cs
- WindowsComboBox.cs
- OleDbRowUpdatingEvent.cs
- EventMappingSettingsCollection.cs
- HitTestWithPointDrawingContextWalker.cs
- MeshGeometry3D.cs
- DataService.cs
- CollectionViewGroupInternal.cs
- PersonalizationProviderHelper.cs
- StrokeDescriptor.cs
- ConfigUtil.cs
- DaylightTime.cs
- CultureTable.cs
- ReadOnlyTernaryTree.cs
- ValueQuery.cs
- ToolStripSeparator.cs
- BlockingCollection.cs
- FormatException.cs
- EncodingDataItem.cs
- DetailsViewModeEventArgs.cs
- Tablet.cs
- QueryableFilterUserControl.cs
- WebPartEditVerb.cs
- CompositeCollection.cs
- ButtonRenderer.cs
- BindToObject.cs
- CustomPopupPlacement.cs
- CodeRegionDirective.cs
- DataGridSortCommandEventArgs.cs
- LineServices.cs
- ListView.cs
- ResourcePool.cs
- TrackingMemoryStreamFactory.cs
- ListView.cs
- WsatRegistrationHeader.cs
- RequestCache.cs
- IBuiltInEvidence.cs
- StateRuntime.cs
- _SSPIWrapper.cs
- DesignerResources.cs
- BindingCompleteEventArgs.cs
- ValidatorCollection.cs
- AccessViolationException.cs
- ResourceAttributes.cs
- ArglessEventHandlerProxy.cs
- SoapObjectReader.cs
- SortKey.cs
- ClonableStack.cs
- AutoGeneratedFieldProperties.cs
- ReadOnlyHierarchicalDataSourceView.cs
- Win32MouseDevice.cs
- Classification.cs
- SrgsElementFactoryCompiler.cs
- HttpSocketManager.cs
- XPathItem.cs
- TextAnchor.cs
- XmlSchemaNotation.cs
- Win32Exception.cs
- WebException.cs
- ListDictionaryInternal.cs
- SmtpTransport.cs
- SystemUdpStatistics.cs
- XmlSignatureProperties.cs
- Viewport3DAutomationPeer.cs
- AppDomain.cs
- PropertyOrder.cs
- TemplateNameScope.cs
- BindingOperations.cs
- DataTableReader.cs
- X509SubjectKeyIdentifierClause.cs
- Viewport3DAutomationPeer.cs