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
- QuadraticBezierSegment.cs
- DuplicateDetector.cs
- LinqDataSourceDisposeEventArgs.cs
- ZoomPercentageConverter.cs
- HierarchicalDataSourceControl.cs
- TextEndOfSegment.cs
- SemaphoreSecurity.cs
- InternalCache.cs
- ContainerParaClient.cs
- SimpleType.cs
- TextSelectionHelper.cs
- ExportException.cs
- ResourcesChangeInfo.cs
- CompilerTypeWithParams.cs
- CodeGotoStatement.cs
- ContextQuery.cs
- SchemaComplexType.cs
- QilValidationVisitor.cs
- SecurityTraceRecordHelper.cs
- MetadataExporter.cs
- ClonableStack.cs
- XPathMultyIterator.cs
- Light.cs
- RegistryDataKey.cs
- RegularExpressionValidator.cs
- WebHttpEndpointElement.cs
- MenuItemStyleCollection.cs
- CodeLinePragma.cs
- objectquery_tresulttype.cs
- WriteableBitmap.cs
- DummyDataSource.cs
- MenuItemCollectionEditorDialog.cs
- ContentType.cs
- SystemNetworkInterface.cs
- FtpWebResponse.cs
- BitSet.cs
- XPathDocument.cs
- NativeMethods.cs
- DrawingAttributes.cs
- FilePresentation.cs
- EasingKeyFrames.cs
- BevelBitmapEffect.cs
- EnvelopedSignatureTransform.cs
- CompositeDataBoundControl.cs
- Exceptions.cs
- ApplicationActivator.cs
- versioninfo.cs
- ExpressionValueEditor.cs
- ToolBar.cs
- DrawingContext.cs
- NoPersistHandle.cs
- TextSelectionProcessor.cs
- Semaphore.cs
- DataViewManagerListItemTypeDescriptor.cs
- SettingsProperty.cs
- EventTrigger.cs
- PenLineJoinValidation.cs
- RuntimeHelpers.cs
- StringTraceRecord.cs
- InnerItemCollectionView.cs
- SemanticResultValue.cs
- OleDbCommand.cs
- WhitespaceReader.cs
- GeometryCombineModeValidation.cs
- ScriptHandlerFactory.cs
- EncoderBestFitFallback.cs
- DriveNotFoundException.cs
- ArrayEditor.cs
- UpDownBase.cs
- BindingNavigator.cs
- PriorityRange.cs
- AssemblyUtil.cs
- AsynchronousChannel.cs
- UserUseLicenseDictionaryLoader.cs
- HighContrastHelper.cs
- SerialStream.cs
- URL.cs
- UrlAuthFailedErrorFormatter.cs
- Label.cs
- CodeGenerator.cs
- CodeExporter.cs
- InvalidComObjectException.cs
- FromReply.cs
- UpDownEvent.cs
- RuntimeConfigLKG.cs
- DetailsViewModeEventArgs.cs
- WebPartsSection.cs
- TTSEvent.cs
- OleStrCAMarshaler.cs
- BlobPersonalizationState.cs
- SetState.cs
- StructuredCompositeActivityDesigner.cs
- StorageRoot.cs
- NamespaceCollection.cs
- MenuItemStyleCollection.cs
- OdbcParameterCollection.cs
- Rotation3D.cs
- FormattedText.cs
- ProfilePropertySettings.cs
- Font.cs