Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntityDesign / Design / System / Data / EntityModel / Emitters / PropertyEmitterBase.cs / 1305376 / PropertyEmitterBase.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.CodeDom; using System.Collections.Generic; using System.Data.Metadata.Edm; using System.Diagnostics; using System.Data.Entity.Design.SsdlGenerator; using System.Data.Entity.Design.Common; namespace System.Data.EntityModel.Emitters { internal abstract class PropertyEmitterBase : MetadataItemEmitter { private bool _declaringTypeUsesStandardBaseType; protected PropertyEmitterBase(ClientApiGenerator generator, MetadataItem item, bool declaringTypeUsesStandardBaseType) :base(generator, item) { Debug.Assert(item != null, "item is null"); _declaringTypeUsesStandardBaseType = declaringTypeUsesStandardBaseType; } ////// This is where the derived classes supply their emit logic. /// /// The CodeDom representation of the type that the property is being added to. protected abstract void EmitProperty(CodeTypeDeclaration typeDecl); ////// Validation logic specific to property emitters /// protected override void Validate() { VerifyGetterAndSetterAccessibilityCompatability(); Generator.VerifyLanguageCaseSensitiveCompatibilityForProperty(Item as EdmMember); } ////// The compiler ensures accessibility on a Setter/Getter is more restrictive than on the Property. /// However accessibility modifiers are not well ordered. Internal and Protected don't go well together /// because neither is more restrictive than others. /// private void VerifyGetterAndSetterAccessibilityCompatability() { if (PropertyEmitter.GetGetterAccessibility(Item) == MemberAttributes.Assembly && PropertyEmitter.GetSetterAccessibility(Item) == MemberAttributes.Family) { Generator.AddError(System.Data.Entity.Design.Strings.GeneratedPropertyAccessibilityConflict(Item.Name, "Internal", "Protected"), ModelBuilderErrorCode.GeneratedPropertyAccessibilityConflict, EdmSchemaErrorSeverity.Error, Item.DeclaringType.FullName, Item.Name); } else if (PropertyEmitter.GetGetterAccessibility(Item) == MemberAttributes.Family && PropertyEmitter.GetSetterAccessibility(Item) == MemberAttributes.Assembly) { Generator.AddError(System.Data.Entity.Design.Strings.GeneratedPropertyAccessibilityConflict(Item.Name, "Protected", "Internal"), ModelBuilderErrorCode.GeneratedPropertyAccessibilityConflict, EdmSchemaErrorSeverity.Error, Item.DeclaringType.FullName, Item.Name); } } ////// Main method for Emitting property code. /// /// The CodeDom representation of the type that the property is being added to. public void Emit(CodeTypeDeclaration typeDecl) { Validate(); EmitProperty(typeDecl); } protected bool AncestorClassDefinesName(string name) { if (_declaringTypeUsesStandardBaseType && Utils.DoesTypeReserveMemberName(Item.DeclaringType, name, Generator.LanguageAppropriateStringComparer)) { return true; } StructuralType baseType = Item.DeclaringType.BaseType as StructuralType; if (baseType != null && baseType.Members.Contains(name)) { return true; } return false; } public new EdmMember Item { get { return base.Item as EdmMember; } } } } // 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
- CacheModeConverter.cs
- PointAnimation.cs
- SwitchAttribute.cs
- Annotation.cs
- WindowsScrollBarBits.cs
- BamlReader.cs
- DataProtection.cs
- ManagedWndProcTracker.cs
- UpdateCommandGenerator.cs
- SynchronousSendBindingElement.cs
- TrustManagerPromptUI.cs
- __Error.cs
- InputBuffer.cs
- PropertyGroupDescription.cs
- PauseStoryboard.cs
- PropertyChangedEventArgs.cs
- ThrowHelper.cs
- XmlCollation.cs
- XmlQualifiedNameTest.cs
- dbenumerator.cs
- VectorCollectionConverter.cs
- RootBuilder.cs
- SessionSwitchEventArgs.cs
- EventMap.cs
- TimeStampChecker.cs
- SystemIcmpV4Statistics.cs
- ToolboxItem.cs
- LinqDataSourceContextData.cs
- ScrollBar.cs
- UIElementAutomationPeer.cs
- Bold.cs
- ToolStripItemGlyph.cs
- DataList.cs
- ValidationRuleCollection.cs
- ParameterCollectionEditor.cs
- LogSwitch.cs
- MultiplexingFormatMapping.cs
- Lazy.cs
- PersonalizationProviderCollection.cs
- IndexerNameAttribute.cs
- AstTree.cs
- ObjectStateFormatter.cs
- ClaimTypeRequirement.cs
- RC2.cs
- Vector3dCollection.cs
- DataGridItemAttachedStorage.cs
- CqlParser.cs
- ErrorHandler.cs
- DecoratedNameAttribute.cs
- DefaultProxySection.cs
- WebPartHeaderCloseVerb.cs
- CacheMemory.cs
- WSSecurityOneDotOneSendSecurityHeader.cs
- GuidTagList.cs
- graph.cs
- TranslateTransform.cs
- AmbientValueAttribute.cs
- ActivityCollectionMarkupSerializer.cs
- SchemaAttDef.cs
- FunctionDefinition.cs
- TextSearch.cs
- XmlTextReaderImplHelpers.cs
- DependencyObjectProvider.cs
- ToolStripSystemRenderer.cs
- Visual3D.cs
- CalendarAutomationPeer.cs
- RuntimeWrappedException.cs
- BlockingCollection.cs
- SchemaMerger.cs
- ReaderWriterLockWrapper.cs
- ItemContainerPattern.cs
- WebPartZoneBase.cs
- PermissionListSet.cs
- ScrollViewerAutomationPeer.cs
- Preprocessor.cs
- PagesSection.cs
- RequestCache.cs
- SqlDataSourceFilteringEventArgs.cs
- FontSourceCollection.cs
- FixedHighlight.cs
- PrivilegedConfigurationManager.cs
- Debugger.cs
- ReflectionTypeLoadException.cs
- WebBrowserBase.cs
- CustomError.cs
- DiscardableAttribute.cs
- MarshalDirectiveException.cs
- ManipulationBoundaryFeedbackEventArgs.cs
- SamlAssertion.cs
- RequestQueue.cs
- Focus.cs
- FileDialog.cs
- RectangleF.cs
- TranslateTransform.cs
- Queue.cs
- dataprotectionpermission.cs
- ResourceAssociationTypeEnd.cs
- PackageStore.cs
- PointValueSerializer.cs
- FormViewInsertedEventArgs.cs