Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntityDesign / Design / System / Data / Entity / Design / PluralizationService / BidirectionalDictionary.cs / 1305376 / BidirectionalDictionary.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Globalization; namespace System.Data.Entity.Design.PluralizationServices { ////// This class provide service for both the singularization and pluralization, it takes the word pairs /// in the ctor following the rules that the first one is singular and the second one is plural. /// internal class BidirectionalDictionary{ internal Dictionary FirstToSecondDictionary { get; set; } internal Dictionary SecondToFirstDictionary { get; set; } internal BidirectionalDictionary() { this.FirstToSecondDictionary = new Dictionary (); this.SecondToFirstDictionary = new Dictionary (); } internal BidirectionalDictionary(Dictionary firstToSecondDictionary) : this() { foreach (var key in firstToSecondDictionary.Keys) { this.AddValue(key, firstToSecondDictionary[key]); } } internal virtual bool ExistsInFirst(TFirst value) { if (this.FirstToSecondDictionary.ContainsKey(value)) { return true; } return false; } internal virtual bool ExistsInSecond(TSecond value) { if (this.SecondToFirstDictionary.ContainsKey(value)) { return true; } return false; } internal virtual TSecond GetSecondValue(TFirst value) { if (this.ExistsInFirst(value)) { return this.FirstToSecondDictionary[value]; } else { return default(TSecond); } } internal virtual TFirst GetFirstValue(TSecond value) { if (this.ExistsInSecond(value)) { return this.SecondToFirstDictionary[value]; } else { return default(TFirst); } } internal void AddValue(TFirst firstValue, TSecond secondValue) { this.FirstToSecondDictionary.Add(firstValue, secondValue); if (!this.SecondToFirstDictionary.ContainsKey(secondValue)) { this.SecondToFirstDictionary.Add(secondValue, firstValue); } } } internal class StringBidirectionalDictionary : BidirectionalDictionary { internal StringBidirectionalDictionary() : base() { } internal StringBidirectionalDictionary(Dictionary firstToSecondDictionary) : base(firstToSecondDictionary) { } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")] internal override bool ExistsInFirst(string value) { return base.ExistsInFirst(value.ToLowerInvariant()); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")] internal override bool ExistsInSecond(string value) { return base.ExistsInSecond(value.ToLowerInvariant()); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")] internal override string GetFirstValue(string value) { return base.GetFirstValue(value.ToLowerInvariant()); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")] internal override string GetSecondValue(string value) { return base.GetSecondValue(value.ToLowerInvariant()); } } } // 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
- LinqDataSourceInsertEventArgs.cs
- WizardPanelChangingEventArgs.cs
- PublisherIdentityPermission.cs
- Win32.cs
- EntityDescriptor.cs
- OutputCacheSettingsSection.cs
- SqlExpander.cs
- XmlAttributeHolder.cs
- ResXResourceWriter.cs
- TableItemStyle.cs
- NavigationHelper.cs
- DataGridViewRowEventArgs.cs
- NavigatingCancelEventArgs.cs
- InstanceCreationEditor.cs
- TranslateTransform.cs
- SessionStateContainer.cs
- OleDbParameter.cs
- Border.cs
- ZipIOLocalFileDataDescriptor.cs
- TypeExtensionSerializer.cs
- SqlUserDefinedTypeAttribute.cs
- StrokeSerializer.cs
- SafeRegistryHandle.cs
- TextEmbeddedObject.cs
- PenCursorManager.cs
- IndexOutOfRangeException.cs
- MetaModel.cs
- Latin1Encoding.cs
- Polygon.cs
- AlternateView.cs
- Panel.cs
- TagPrefixCollection.cs
- XmlSchemaCollection.cs
- DrawingContext.cs
- FilteredAttributeCollection.cs
- SchemaNamespaceManager.cs
- Attributes.cs
- Cursors.cs
- DataObjectMethodAttribute.cs
- XmlAttributeCollection.cs
- WebHttpBindingCollectionElement.cs
- ConfigurationCollectionAttribute.cs
- XmlDownloadManager.cs
- TablePatternIdentifiers.cs
- AuthenticatingEventArgs.cs
- ProgressBarHighlightConverter.cs
- CryptoApi.cs
- TypeNameHelper.cs
- BooleanAnimationBase.cs
- PerformanceCounterPermission.cs
- DocComment.cs
- _Rfc2616CacheValidators.cs
- FormViewUpdateEventArgs.cs
- SingleTagSectionHandler.cs
- Range.cs
- HtmlButton.cs
- hebrewshape.cs
- ListenerConnectionDemuxer.cs
- Visual3D.cs
- EdmComplexTypeAttribute.cs
- DataGridViewSelectedColumnCollection.cs
- ProfilePropertyMetadata.cs
- PageCache.cs
- DependencyPropertyHelper.cs
- DataBindingHandlerAttribute.cs
- CompleteWizardStep.cs
- FormsAuthenticationCredentials.cs
- SqlMetaData.cs
- ContextProperty.cs
- TablePattern.cs
- Logging.cs
- ButtonBase.cs
- MaterialGroup.cs
- MimeMultiPart.cs
- FormatterServices.cs
- wgx_commands.cs
- _DisconnectOverlappedAsyncResult.cs
- EditorAttribute.cs
- HttpCapabilitiesBase.cs
- FilePrompt.cs
- RemoteWebConfigurationHost.cs
- EntityDataSourceContextDisposingEventArgs.cs
- MapPathBasedVirtualPathProvider.cs
- HttpCachePolicyElement.cs
- PropertyGeneratedEventArgs.cs
- HitTestParameters.cs
- ObjectNotFoundException.cs
- ScriptIgnoreAttribute.cs
- ColorMatrix.cs
- ServiceDesigner.xaml.cs
- FormsIdentity.cs
- LOSFormatter.cs
- ToolStripItemTextRenderEventArgs.cs
- SafeSecurityHandles.cs
- Models.cs
- SchemaCollectionPreprocessor.cs
- GeneralTransform3D.cs
- ConnectionPointCookie.cs
- Publisher.cs
- MarkupObject.cs