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
- Positioning.cs
- TripleDESCryptoServiceProvider.cs
- XmlMtomReader.cs
- SortKey.cs
- GacUtil.cs
- ValuePattern.cs
- ObjectSet.cs
- IdentityReference.cs
- WebConfigurationHostFileChange.cs
- PermissionSetTriple.cs
- UriTemplateEquivalenceComparer.cs
- ZipIOCentralDirectoryFileHeader.cs
- MaterialCollection.cs
- CodeVariableReferenceExpression.cs
- CommandTreeTypeHelper.cs
- webeventbuffer.cs
- RegexCaptureCollection.cs
- DirtyTextRange.cs
- FlowchartStart.xaml.cs
- TransportManager.cs
- LifetimeServices.cs
- KeyBinding.cs
- counter.cs
- EDesignUtil.cs
- MetadataHelper.cs
- SecurityImpersonationBehavior.cs
- LogAppendAsyncResult.cs
- PageRanges.cs
- QueryParameter.cs
- NumberEdit.cs
- UnknownWrapper.cs
- BitVector32.cs
- SqlMethodTransformer.cs
- GridViewRow.cs
- ViewSimplifier.cs
- BitSet.cs
- listitem.cs
- CodeRemoveEventStatement.cs
- HttpDictionary.cs
- Marshal.cs
- PeerSecurityHelpers.cs
- DecimalConverter.cs
- OpenFileDialog.cs
- LambdaCompiler.Binary.cs
- MetadataArtifactLoaderFile.cs
- ControlEvent.cs
- PropertyKey.cs
- Relationship.cs
- PropertyValueChangedEvent.cs
- ToolTipAutomationPeer.cs
- DefaultValueAttribute.cs
- PageCopyCount.cs
- DataSvcMapFile.cs
- DockingAttribute.cs
- MetaModel.cs
- CommandField.cs
- ExportOptions.cs
- cookiecontainer.cs
- HttpHandlersSection.cs
- Command.cs
- XdrBuilder.cs
- ListItemCollection.cs
- MemberAccessException.cs
- RowCache.cs
- loginstatus.cs
- CharEnumerator.cs
- StorageEntityContainerMapping.cs
- MetadataArtifactLoaderCompositeResource.cs
- ClientCultureInfo.cs
- MetricEntry.cs
- ReservationCollection.cs
- NativeRightsManagementAPIsStructures.cs
- DataControlLinkButton.cs
- ElementUtil.cs
- Workspace.cs
- WindowsScrollBarBits.cs
- StatusBar.cs
- ByteStorage.cs
- HashStream.cs
- ColumnClickEvent.cs
- translator.cs
- ItemContainerProviderWrapper.cs
- EditorServiceContext.cs
- CaseInsensitiveOrdinalStringComparer.cs
- ExpressionUtilities.cs
- HtmlForm.cs
- DataGridViewRowsRemovedEventArgs.cs
- FrameworkContentElementAutomationPeer.cs
- DataReaderContainer.cs
- XmlTextAttribute.cs
- COM2ColorConverter.cs
- Walker.cs
- FrameworkContextData.cs
- CallbackWrapper.cs
- OracleInfoMessageEventArgs.cs
- Rect.cs
- TracingConnectionListener.cs
- XmlTextReaderImplHelpers.cs
- DtdParser.cs
- SmiEventStream.cs