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
- WebPartCatalogCloseVerb.cs
- BindingMAnagerBase.cs
- HasCopySemanticsAttribute.cs
- MappingSource.cs
- SelectionProviderWrapper.cs
- ChannelOptions.cs
- XmlCharCheckingWriter.cs
- BinHexEncoding.cs
- CodeFieldReferenceExpression.cs
- _HelperAsyncResults.cs
- WindowsSolidBrush.cs
- ConfigsHelper.cs
- ParserHooks.cs
- CorrelationValidator.cs
- LZCodec.cs
- ItemsChangedEventArgs.cs
- MaterialCollection.cs
- HwndAppCommandInputProvider.cs
- ThicknessAnimation.cs
- ToolStripManager.cs
- SchemaInfo.cs
- AudioSignalProblemOccurredEventArgs.cs
- ContainerTracking.cs
- InfoCardTrace.cs
- ScrollBar.cs
- HatchBrush.cs
- FtpCachePolicyElement.cs
- ScrollItemPatternIdentifiers.cs
- AnnotationAdorner.cs
- ResourcesGenerator.cs
- TraceFilter.cs
- XsltLibrary.cs
- HwndTarget.cs
- ListCollectionView.cs
- DataGridTextBoxColumn.cs
- DbMetaDataColumnNames.cs
- PackagePart.cs
- DataSourceConverter.cs
- DescendantQuery.cs
- COM2TypeInfoProcessor.cs
- DataGridCellsPanel.cs
- ButtonColumn.cs
- ComboBox.cs
- KeyManager.cs
- FormsAuthenticationTicket.cs
- SiteMapDataSourceView.cs
- InvokeHandlers.cs
- GroupBoxAutomationPeer.cs
- HwndKeyboardInputProvider.cs
- FrameworkTemplate.cs
- WebBrowserDocumentCompletedEventHandler.cs
- ScriptServiceAttribute.cs
- CommonDialog.cs
- ProcessInfo.cs
- ToolStripComboBox.cs
- Timeline.cs
- X509Extension.cs
- ConstructorArgumentAttribute.cs
- Utils.cs
- Native.cs
- Menu.cs
- ButtonBaseAdapter.cs
- XmlObjectSerializerWriteContext.cs
- MailFileEditor.cs
- Stroke.cs
- XmlSchemaFacet.cs
- ScaleTransform.cs
- BamlLocalizabilityResolver.cs
- CheckedListBox.cs
- ValidationEventArgs.cs
- FileUtil.cs
- XmlWriterTraceListener.cs
- FixedSOMPage.cs
- ReflectPropertyDescriptor.cs
- MembershipValidatePasswordEventArgs.cs
- LineSegment.cs
- BlurEffect.cs
- ButtonChrome.cs
- DebugController.cs
- XsdValidatingReader.cs
- MessageUtil.cs
- DataGridPagerStyle.cs
- CommandEventArgs.cs
- MachineKeySection.cs
- TextFormatterContext.cs
- linebase.cs
- ParallelEnumerableWrapper.cs
- AppModelKnownContentFactory.cs
- Label.cs
- SvcMapFileLoader.cs
- InvalidateEvent.cs
- PrivilegeNotHeldException.cs
- SqlNotificationEventArgs.cs
- EmptyEnumerator.cs
- TypeInitializationException.cs
- TcpChannelHelper.cs
- BackgroundWorker.cs
- CustomErrorCollection.cs
- DataServiceStreamResponse.cs
- CLRBindingWorker.cs