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
- CharacterBuffer.cs
- ToolStripItemCollection.cs
- SessionStateUtil.cs
- XsltLibrary.cs
- ManifestSignatureInformation.cs
- LayoutEditorPart.cs
- ImplicitInputBrush.cs
- SafeNativeMethods.cs
- EventHandlersStore.cs
- XmlElementElement.cs
- WebProxyScriptElement.cs
- TextEffectResolver.cs
- RuntimeCompatibilityAttribute.cs
- PathFigureCollectionValueSerializer.cs
- SByte.cs
- CookielessHelper.cs
- TextTrailingCharacterEllipsis.cs
- WebColorConverter.cs
- TrackPoint.cs
- ThemeableAttribute.cs
- TextServicesDisplayAttribute.cs
- EditorAttribute.cs
- BindingExpression.cs
- BrowserCapabilitiesFactory.cs
- MetadataArtifactLoaderCompositeResource.cs
- ManualResetEvent.cs
- LinqExpressionNormalizer.cs
- BooleanFunctions.cs
- PointLight.cs
- MappingSource.cs
- Opcode.cs
- Group.cs
- RSAOAEPKeyExchangeDeformatter.cs
- RawStylusInputCustomDataList.cs
- TextMetrics.cs
- KnownTypeHelper.cs
- WebPartConnectionsDisconnectVerb.cs
- AttachedPropertyBrowsableAttribute.cs
- StylusPointProperties.cs
- Cursor.cs
- DefaultEventAttribute.cs
- Matrix.cs
- PreviewPrintController.cs
- CreateBookmarkScope.cs
- ProcessInputEventArgs.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- DateBoldEvent.cs
- TableRow.cs
- CodeDOMUtility.cs
- EntityConnectionStringBuilderItem.cs
- MasterPage.cs
- Ray3DHitTestResult.cs
- MasterPageBuildProvider.cs
- ScriptingSectionGroup.cs
- XmlSequenceWriter.cs
- TemplateKey.cs
- StopStoryboard.cs
- DataSourceXmlSubItemAttribute.cs
- BitmapEffectGeneralTransform.cs
- Registry.cs
- CommonDialog.cs
- InputLanguageCollection.cs
- EventDescriptor.cs
- BrowserTree.cs
- FamilyMapCollection.cs
- WindowsScrollBar.cs
- DescendantQuery.cs
- FixedFindEngine.cs
- HandlerMappingMemo.cs
- XamlFrame.cs
- RpcCryptoContext.cs
- HttpApplicationFactory.cs
- TextRange.cs
- DecoratedNameAttribute.cs
- DbModificationCommandTree.cs
- State.cs
- AssemblyNameUtility.cs
- MatchingStyle.cs
- Parallel.cs
- ServiceDurableInstanceContextProvider.cs
- IntegerFacetDescriptionElement.cs
- DivideByZeroException.cs
- CheckBoxRenderer.cs
- ConfigurationManagerInternal.cs
- Binding.cs
- Stackframe.cs
- PerformanceCountersElement.cs
- DataObjectMethodAttribute.cs
- ResizeGrip.cs
- ListenerSessionConnection.cs
- TargetConverter.cs
- UnsafeNativeMethods.cs
- DrawingVisual.cs
- DatagridviewDisplayedBandsData.cs
- Empty.cs
- DataTablePropertyDescriptor.cs
- Literal.cs
- AdRotator.cs
- Transaction.cs
- DataGridViewRowEventArgs.cs