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
- DesignerDataConnection.cs
- GiveFeedbackEvent.cs
- MachineKeyValidationConverter.cs
- Policy.cs
- OraclePermission.cs
- HighlightVisual.cs
- PublishLicense.cs
- SingleKeyFrameCollection.cs
- TreeNodeCollection.cs
- HijriCalendar.cs
- FactoryId.cs
- SerializationAttributes.cs
- LinkLabel.cs
- WinInet.cs
- HttpDictionary.cs
- Expander.cs
- DataGridLinkButton.cs
- RegexWriter.cs
- safelink.cs
- SystemColorTracker.cs
- AssemblyContextControlItem.cs
- TableItemStyle.cs
- RepeatBehavior.cs
- DataRecord.cs
- HttpCapabilitiesSectionHandler.cs
- TextTreeText.cs
- _RequestCacheProtocol.cs
- VectorValueSerializer.cs
- XmlCodeExporter.cs
- SecurityTokenProvider.cs
- RemoveStoryboard.cs
- MailWriter.cs
- SearchForVirtualItemEventArgs.cs
- SymDocumentType.cs
- DynamicExpression.cs
- Point3DAnimation.cs
- SiteMapNodeItemEventArgs.cs
- Track.cs
- Decoder.cs
- CorrelationTokenInvalidatedHandler.cs
- XmlStringTable.cs
- ManualResetEvent.cs
- AssemblyInfo.cs
- IssuanceLicense.cs
- SqlNotificationRequest.cs
- SecureUICommand.cs
- storepermissionattribute.cs
- SafePEFileHandle.cs
- MimeTextImporter.cs
- InstallerTypeAttribute.cs
- CellConstantDomain.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- HandleScope.cs
- ValidationSummary.cs
- ToolStripDropDownClosingEventArgs.cs
- BitmapMetadata.cs
- ConfigurationProperty.cs
- HorizontalAlignConverter.cs
- ClassData.cs
- dataobject.cs
- connectionpool.cs
- CodeCommentStatement.cs
- _Events.cs
- DataGridLinkButton.cs
- X509Logo.cs
- SQLMembershipProvider.cs
- ColumnWidthChangingEvent.cs
- SevenBitStream.cs
- XmlSchemaInclude.cs
- LinqDataSourceView.cs
- SoapAttributes.cs
- _ConnectionGroup.cs
- ContentElementAutomationPeer.cs
- DBSchemaTable.cs
- StateValidator.cs
- GroupPartitionExpr.cs
- TextBoxRenderer.cs
- IndicCharClassifier.cs
- CalculatedColumn.cs
- DrawingBrush.cs
- StyleXamlParser.cs
- ThreadExceptionDialog.cs
- CustomCredentialPolicy.cs
- ControlParameter.cs
- DataGridColumnHeader.cs
- FixedPageStructure.cs
- ItemMap.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- DropDownList.cs
- PenThread.cs
- DependencyPropertyAttribute.cs
- RegexGroup.cs
- PartialCachingAttribute.cs
- PriorityQueue.cs
- WebConvert.cs
- MetadataFile.cs
- IndexedString.cs
- HttpStreams.cs
- MetadataCache.cs
- RadioButtonFlatAdapter.cs