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
- MatrixAnimationBase.cs
- ControlValuePropertyAttribute.cs
- CurrentChangedEventManager.cs
- TextBox.cs
- TraceSource.cs
- TailPinnedEventArgs.cs
- ActivityExecutorDelegateInfo.cs
- AbsoluteQuery.cs
- GetIsBrowserClientRequest.cs
- BuildManagerHost.cs
- WorkItem.cs
- SqlDataSourceConfigureSortForm.cs
- CodeAccessPermission.cs
- ConfigXmlCDataSection.cs
- CalendarKeyboardHelper.cs
- Condition.cs
- PassportIdentity.cs
- HeaderedContentControl.cs
- Imaging.cs
- TextModifierScope.cs
- DrawingImage.cs
- XamlParser.cs
- Timer.cs
- DataGridAutoGeneratingColumnEventArgs.cs
- Util.cs
- SafeNativeMethods.cs
- XPathSelfQuery.cs
- XmlIlTypeHelper.cs
- EdmEntityTypeAttribute.cs
- RijndaelManagedTransform.cs
- OracleDateTime.cs
- DataGridDesigner.cs
- BindUriHelper.cs
- EncryptedPackage.cs
- Stack.cs
- CreateBookmarkScope.cs
- MouseEventArgs.cs
- ObjRef.cs
- ObjectManager.cs
- HtmlShimManager.cs
- ToolStripSeparator.cs
- InvokeHandlers.cs
- HtmlInputPassword.cs
- __ConsoleStream.cs
- WebBrowserHelper.cs
- GridViewItemAutomationPeer.cs
- XmlSchemaObjectCollection.cs
- WindowsScroll.cs
- RenderData.cs
- AudioStateChangedEventArgs.cs
- PasswordDeriveBytes.cs
- WebPartZoneBase.cs
- XmlText.cs
- ClassData.cs
- OAVariantLib.cs
- EntityDataSourceConfigureObjectContextPanel.cs
- GridEntry.cs
- WebHeaderCollection.cs
- Timer.cs
- JournalNavigationScope.cs
- RemotingConfigParser.cs
- X509UI.cs
- SecurityException.cs
- dsa.cs
- fixedPageContentExtractor.cs
- RecordsAffectedEventArgs.cs
- DragSelectionMessageFilter.cs
- DataGridLinkButton.cs
- DeclarativeConditionsCollection.cs
- AvTrace.cs
- WindowsUpDown.cs
- PackagePart.cs
- WebPartDisplayModeEventArgs.cs
- HttpServerVarsCollection.cs
- BitmapEffectDrawing.cs
- IODescriptionAttribute.cs
- DebugView.cs
- XsdDuration.cs
- MissingManifestResourceException.cs
- Expression.cs
- SchemaImporterExtension.cs
- CellTreeNodeVisitors.cs
- BackgroundWorker.cs
- CompModSwitches.cs
- CodeValidator.cs
- InputLanguage.cs
- XPathAncestorIterator.cs
- AppDomainFactory.cs
- AttachmentCollection.cs
- COM2AboutBoxPropertyDescriptor.cs
- FlowDocumentPaginator.cs
- TextEditorCharacters.cs
- ECDsa.cs
- PageSetupDialog.cs
- ProtocolsInstallComponent.cs
- ComboBox.cs
- MemberInitExpression.cs
- mediaeventshelper.cs
- CodeCatchClause.cs
- DateTimeOffsetAdapter.cs