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
- ScriptIgnoreAttribute.cs
- PaintEvent.cs
- VideoDrawing.cs
- CopyEncoder.cs
- CopyNamespacesAction.cs
- SoapServerMethod.cs
- PlatformCulture.cs
- SHA1CryptoServiceProvider.cs
- ToolStripItemDataObject.cs
- Code.cs
- AsymmetricKeyExchangeDeformatter.cs
- HitTestWithGeometryDrawingContextWalker.cs
- StandardCommands.cs
- HtmlTableRow.cs
- DataSourceDescriptorCollection.cs
- DataContractSerializer.cs
- SmiSettersStream.cs
- SelectionChangedEventArgs.cs
- StorageEndPropertyMapping.cs
- IsolatedStorageFile.cs
- RightsManagementInformation.cs
- DateTimeOffset.cs
- ObjectDataSourceEventArgs.cs
- EnterpriseServicesHelper.cs
- SchemaComplexType.cs
- WebPartZone.cs
- OracleRowUpdatingEventArgs.cs
- SqlMultiplexer.cs
- TaiwanLunisolarCalendar.cs
- EventMappingSettingsCollection.cs
- WebPartsPersonalizationAuthorization.cs
- ProcessStartInfo.cs
- InstanceNotFoundException.cs
- SQLBinary.cs
- SemanticKeyElement.cs
- RichTextBoxConstants.cs
- SeekStoryboard.cs
- Binding.cs
- XLinq.cs
- Privilege.cs
- CodeCompileUnit.cs
- UnsafeNativeMethods.cs
- UnionExpr.cs
- ConversionContext.cs
- BaseProcessor.cs
- DiscoveryEndpoint.cs
- BehaviorService.cs
- ContainerUtilities.cs
- sqlstateclientmanager.cs
- BufferModeSettings.cs
- ETagAttribute.cs
- SizeAnimationClockResource.cs
- ValidationService.cs
- RightsManagementEncryptedStream.cs
- XmlWriter.cs
- FormCollection.cs
- MethodBuilder.cs
- CompModSwitches.cs
- SecurityUtils.cs
- PersistenceTypeAttribute.cs
- OciHandle.cs
- DrawingAttributesDefaultValueFactory.cs
- PaperSource.cs
- StorageEntitySetMapping.cs
- UnmanagedMarshal.cs
- ToolStripControlHost.cs
- AssociatedControlConverter.cs
- Timer.cs
- NullableDoubleMinMaxAggregationOperator.cs
- EarlyBoundInfo.cs
- Annotation.cs
- SBCSCodePageEncoding.cs
- Header.cs
- DrawingGroup.cs
- ProcessHost.cs
- BitmapEffectRenderDataResource.cs
- Executor.cs
- DetailsViewModeEventArgs.cs
- DbProviderSpecificTypePropertyAttribute.cs
- ProjectedSlot.cs
- LocatorPartList.cs
- CodeMethodReturnStatement.cs
- MsmqIntegrationChannelFactory.cs
- UseAttributeSetsAction.cs
- SessionStateSection.cs
- SqlComparer.cs
- ServerValidateEventArgs.cs
- WmiEventSink.cs
- ApplyTemplatesAction.cs
- ConnectionStringSettingsCollection.cs
- SignatureHelper.cs
- SchemaNames.cs
- ZipIOLocalFileBlock.cs
- WebPartEditorOkVerb.cs
- RelationshipEndMember.cs
- DropShadowEffect.cs
- EditorZoneBase.cs
- VisualTreeUtils.cs
- BridgeDataRecord.cs
- DesigntimeLicenseContextSerializer.cs