Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / FaultReason.cs / 1 / FaultReason.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel { using System.Collections.Generic; using System.Globalization; public class FaultReason { SynchronizedReadOnlyCollectiontranslations; public FaultReason(FaultReasonText translation) { if (translation == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("translation"); Init(translation); } public FaultReason(string text) { // Let FaultReasonText constructor throw Init(new FaultReasonText(text)); } internal FaultReason(string text, string xmlLang) { // Let FaultReasonText constructor throw Init(new FaultReasonText(text, xmlLang)); } internal FaultReason(string text, CultureInfo cultureInfo) { // Let FaultReasonText constructor throw Init(new FaultReasonText(text, cultureInfo)); } public FaultReason(IEnumerable translations) { if (translations == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("translations")); int count = 0; foreach (FaultReasonText faultReasonText in translations) count++; if (count == 0) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.AtLeastOneFaultReasonMustBeSpecified), "translations")); FaultReasonText[] array = new FaultReasonText[count]; int index = 0; foreach (FaultReasonText faultReasonText in translations) { if (faultReasonText == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("translations", SR.GetString(SR.NoNullTranslations)); array[index++] = faultReasonText; } Init(array); } void Init(FaultReasonText translation) { Init(new FaultReasonText[] { translation }); } void Init(FaultReasonText[] translations) { this.translations = new SynchronizedReadOnlyCollection (new object(), Array.AsReadOnly (translations)); } public FaultReasonText GetMatchingTranslation() { return GetMatchingTranslation(CultureInfo.CurrentCulture); } // [....], This function should always return a translation so that a fault can be surfaced. public FaultReasonText GetMatchingTranslation(CultureInfo cultureInfo) { if (cultureInfo == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("cultureInfo")); // If there's only one translation, use it if (translations.Count == 1) return translations[0]; // Search for an exact match for (int i = 0; i < translations.Count; i++) if (translations[i].Matches(cultureInfo)) return translations[i]; // If no exact match is found, proceed by looking for the a translation with a language that is a parent of the current culture if (translations.Count == 0) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.NoMatchingTranslationFoundForFaultText))); // Search for a more general language #pragma warning suppress 56506 string localLang = cultureInfo.Name; while (true) { int idx = localLang.LastIndexOf('-'); // We don't want to accept xml:lang="" if (idx == -1) break; // Clip off the last subtag and look for a match localLang = localLang.Substring(0, idx); for (int i = 0; i < translations.Count; i++) if (translations[i].XmlLang == localLang) return translations[i]; } // Return the first translation if no match is found return translations[0]; } public SynchronizedReadOnlyCollection Translations { get { return translations; } } public override string ToString() { if (translations.Count == 0) return string.Empty; return GetMatchingTranslation().Text; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SQLInt64Storage.cs
- FollowerQueueCreator.cs
- MergeLocalizationDirectives.cs
- WsdlInspector.cs
- StrokeSerializer.cs
- Rotation3D.cs
- IndexedGlyphRun.cs
- HttpServerUtilityWrapper.cs
- XmlMemberMapping.cs
- Sql8ConformanceChecker.cs
- TransformGroup.cs
- TimelineGroup.cs
- KnownBoxes.cs
- SqlRewriteScalarSubqueries.cs
- ReaderWriterLockWrapper.cs
- WpfXamlType.cs
- AudienceUriMode.cs
- SqlConnection.cs
- DbTransaction.cs
- FileSecurity.cs
- LightweightCodeGenerator.cs
- TextInfo.cs
- RelatedCurrencyManager.cs
- MethodToken.cs
- QueryStoreStatusRequest.cs
- Signature.cs
- GridViewRow.cs
- MobileTemplatedControlDesigner.cs
- AsymmetricAlgorithm.cs
- ClientSideProviderDescription.cs
- XPathSelfQuery.cs
- EventLogPermissionEntry.cs
- RegexCharClass.cs
- ArraySet.cs
- DeferredRunTextReference.cs
- SafeCryptHandles.cs
- ping.cs
- GridViewRowEventArgs.cs
- InternalBufferManager.cs
- Activation.cs
- HttpCapabilitiesBase.cs
- Parser.cs
- MultipleViewProviderWrapper.cs
- ListParaClient.cs
- PropertyGridEditorPart.cs
- PolicyStatement.cs
- ConfigurationManager.cs
- BaseDataBoundControl.cs
- ListQueryResults.cs
- TableItemPatternIdentifiers.cs
- RTLAwareMessageBox.cs
- HtmlHead.cs
- DockingAttribute.cs
- Point3DCollectionValueSerializer.cs
- sqlstateclientmanager.cs
- ClassHandlersStore.cs
- COSERVERINFO.cs
- XmlIlGenerator.cs
- PlanCompiler.cs
- DefaultPrintController.cs
- ObjectListCommandEventArgs.cs
- FileUpload.cs
- EventDescriptor.cs
- FixedSOMTableCell.cs
- Rotation3DAnimationUsingKeyFrames.cs
- controlskin.cs
- FormatConvertedBitmap.cs
- Version.cs
- ScalarOps.cs
- ScrollItemPatternIdentifiers.cs
- XmlReflectionImporter.cs
- SerializationHelper.cs
- DelayedRegex.cs
- AdornerHitTestResult.cs
- COM2IManagedPerPropertyBrowsingHandler.cs
- PtsCache.cs
- SingleAnimationUsingKeyFrames.cs
- ActivationServices.cs
- SaveFileDialog.cs
- XmlNodeReader.cs
- HtmlInputRadioButton.cs
- ListViewItemSelectionChangedEvent.cs
- MessagePartProtectionMode.cs
- Properties.cs
- TraceUtility.cs
- ToolStripMenuItemCodeDomSerializer.cs
- PriorityBindingExpression.cs
- columnmapfactory.cs
- BaseCodePageEncoding.cs
- FieldCollectionEditor.cs
- SerialPinChanges.cs
- compensatingcollection.cs
- ResXBuildProvider.cs
- FormViewDeleteEventArgs.cs
- RolePrincipal.cs
- PersonalizationProviderCollection.cs
- Soap11ServerProtocol.cs
- XmlBinaryReader.cs
- DelegatingChannelListener.cs
- RPIdentityRequirement.cs