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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HttpModulesSection.cs
- Vector3DAnimation.cs
- CoordinationService.cs
- SQLResource.cs
- CqlErrorHelper.cs
- DataGridViewSortCompareEventArgs.cs
- SQLInt64Storage.cs
- AnnotationDocumentPaginator.cs
- ConfigPathUtility.cs
- PropertyCollection.cs
- ContentElement.cs
- LinkDescriptor.cs
- XhtmlBasicPageAdapter.cs
- NameValueCollection.cs
- AccessText.cs
- URLEditor.cs
- RelatedPropertyManager.cs
- BitmapDecoder.cs
- TcpConnectionPool.cs
- EntityDataSourceReferenceGroup.cs
- WaitHandle.cs
- XmlElement.cs
- Tokenizer.cs
- RegexWorker.cs
- SemaphoreFullException.cs
- PcmConverter.cs
- LogReservationCollection.cs
- Substitution.cs
- ProviderConnectionPoint.cs
- DbSource.cs
- WorkflowFileItem.cs
- RectangleF.cs
- ExceptionHandlerDesigner.cs
- SecurityContext.cs
- AutoSizeToolBoxItem.cs
- SingleAnimation.cs
- SHA1Managed.cs
- DateTimeOffsetAdapter.cs
- FontDialog.cs
- InitializationEventAttribute.cs
- Hex.cs
- VerificationAttribute.cs
- GcHandle.cs
- Int16KeyFrameCollection.cs
- SQLMembershipProvider.cs
- CacheForPrimitiveTypes.cs
- TextEditorMouse.cs
- DataControlLinkButton.cs
- DbDataRecord.cs
- StreamSecurityUpgradeProvider.cs
- DataBindingExpressionBuilder.cs
- ScrollChrome.cs
- TabOrder.cs
- SharedStatics.cs
- MenuEventArgs.cs
- ManipulationInertiaStartingEventArgs.cs
- WebPartConnectionsEventArgs.cs
- SystemIcmpV6Statistics.cs
- AppDomain.cs
- FormViewCommandEventArgs.cs
- WebRequestModuleElementCollection.cs
- ResourceManager.cs
- ConfigurationLocationCollection.cs
- Mapping.cs
- ItemsChangedEventArgs.cs
- SQLInt64Storage.cs
- SmtpTransport.cs
- FileVersionInfo.cs
- InputGestureCollection.cs
- XamlPointCollectionSerializer.cs
- COM2ColorConverter.cs
- _AuthenticationState.cs
- VisualStyleInformation.cs
- TimeZoneNotFoundException.cs
- WebColorConverter.cs
- ProfileSettingsCollection.cs
- WinCategoryAttribute.cs
- BitmapEffectState.cs
- xml.cs
- ProfileGroupSettings.cs
- Boolean.cs
- EncodingDataItem.cs
- Bitmap.cs
- WebPartAddingEventArgs.cs
- StylusPointPropertyUnit.cs
- FieldCollectionEditor.cs
- EdmPropertyAttribute.cs
- HtmlSelectionListAdapter.cs
- XmlAnyElementAttribute.cs
- AddInEnvironment.cs
- BuilderPropertyEntry.cs
- UnsafeNativeMethods.cs
- SimpleTextLine.cs
- NativeWrapper.cs
- Hashtable.cs
- ProviderSettings.cs
- DataSpaceManager.cs
- MultidimensionalArrayItemReference.cs
- InputScopeManager.cs
- PropertyIdentifier.cs