Code:
/ 4.0 / 4.0 / 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. //---------------------------------------------------------------------- // // 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
- DependencyObject.cs
- TypeLibConverter.cs
- APCustomTypeDescriptor.cs
- ReflectTypeDescriptionProvider.cs
- AssertSection.cs
- oledbmetadatacolumnnames.cs
- AnnotationMap.cs
- CqlQuery.cs
- CTreeGenerator.cs
- ContentFilePart.cs
- UseLicense.cs
- FixedSOMElement.cs
- CodeSubDirectory.cs
- ByteFacetDescriptionElement.cs
- WorkflowInstanceProvider.cs
- Visual3DCollection.cs
- AssemblyBuilderData.cs
- HMACSHA256.cs
- CssTextWriter.cs
- SrgsOneOf.cs
- VariableElement.cs
- DPCustomTypeDescriptor.cs
- ForEach.cs
- QilCloneVisitor.cs
- HtmlInputButton.cs
- Debug.cs
- DataFormats.cs
- GetCertificateRequest.cs
- XmlSchemaException.cs
- SimpleHandlerFactory.cs
- CmsInterop.cs
- WeakEventManager.cs
- XmlNamespaceDeclarationsAttribute.cs
- KeyPullup.cs
- ToolBar.cs
- Solver.cs
- CqlErrorHelper.cs
- EdmItemCollection.cs
- DynamicMethod.cs
- WebPartChrome.cs
- ProtocolsInstallComponent.cs
- DbDeleteCommandTree.cs
- TextTrailingCharacterEllipsis.cs
- ThemeDirectoryCompiler.cs
- DirectoryObjectSecurity.cs
- EventItfInfo.cs
- CancellationHandler.cs
- Label.cs
- IpcChannel.cs
- CharEnumerator.cs
- EdmType.cs
- Trace.cs
- PropertyGridView.cs
- SatelliteContractVersionAttribute.cs
- XamlFrame.cs
- HashAlgorithm.cs
- ProtocolsInstallComponent.cs
- TemplateComponentConnector.cs
- MailWebEventProvider.cs
- InheritedPropertyChangedEventArgs.cs
- DataGridTablesFactory.cs
- TransformGroup.cs
- DataGridCellsPresenter.cs
- FormatterConverter.cs
- XmlTextReaderImpl.cs
- DataGridViewRowHeaderCell.cs
- SqlMethodCallConverter.cs
- CalloutQueueItem.cs
- AsyncOperation.cs
- externdll.cs
- TextTreeRootTextBlock.cs
- SerialStream.cs
- CultureTableRecord.cs
- NonBatchDirectoryCompiler.cs
- DataGridCell.cs
- DataGridRow.cs
- XmlWrappingReader.cs
- GetPageNumberCompletedEventArgs.cs
- BamlTreeNode.cs
- ResourcesGenerator.cs
- indexingfiltermarshaler.cs
- DrawingContext.cs
- ObjectCloneHelper.cs
- RequestNavigateEventArgs.cs
- ImageListStreamer.cs
- QilStrConcatenator.cs
- Literal.cs
- WebZone.cs
- NotCondition.cs
- Attributes.cs
- MissingManifestResourceException.cs
- NullableConverter.cs
- DecoderBestFitFallback.cs
- StorageFunctionMapping.cs
- ModelItemDictionaryImpl.cs
- IndentedWriter.cs
- PackWebResponse.cs
- TextDocumentView.cs
- ImportException.cs
- Evidence.cs