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
- _TLSstream.cs
- QilName.cs
- XmlSchemaIdentityConstraint.cs
- DataServiceContext.cs
- DatasetMethodGenerator.cs
- MetadataSection.cs
- WindowsAltTab.cs
- HostingEnvironmentSection.cs
- MetadataItemCollectionFactory.cs
- Update.cs
- PocoPropertyAccessorStrategy.cs
- WindowsStatic.cs
- TableCellCollection.cs
- ConnectionManagementElementCollection.cs
- DataGridTextBox.cs
- FolderLevelBuildProviderAppliesToAttribute.cs
- DatagridviewDisplayedBandsData.cs
- RunInstallerAttribute.cs
- SecurityTokenSerializer.cs
- DataGridViewImageCell.cs
- SchemaHelper.cs
- LoginDesignerUtil.cs
- IRCollection.cs
- contentDescriptor.cs
- coordinatorscratchpad.cs
- PropertyManager.cs
- DrawingCollection.cs
- RuleSettings.cs
- TransformationRules.cs
- XmlCharType.cs
- DelimitedListTraceListener.cs
- ReferencedCollectionType.cs
- ProtocolsSection.cs
- DataComponentGenerator.cs
- ObjectCloneHelper.cs
- WorkflowMessageEventArgs.cs
- StorageSetMapping.cs
- Crc32Helper.cs
- MimeWriter.cs
- MILUtilities.cs
- X509CertificateTokenFactoryCredential.cs
- DeclaredTypeValidatorAttribute.cs
- PropertyCondition.cs
- TerminateSequence.cs
- AuthorizationSection.cs
- ExpressionNode.cs
- ControlPropertyNameConverter.cs
- OleDbParameterCollection.cs
- CompilerResults.cs
- ServiceBuildProvider.cs
- DataGridViewCellFormattingEventArgs.cs
- nulltextcontainer.cs
- DeferredSelectedIndexReference.cs
- SelectionProcessor.cs
- DocumentApplicationJournalEntry.cs
- xmlformatgeneratorstatics.cs
- VirtualizedCellInfoCollection.cs
- DispatcherOperation.cs
- DataGridViewMethods.cs
- CmsUtils.cs
- ProjectionCamera.cs
- ProbeMatchesApril2005.cs
- SafeHandle.cs
- PoisonMessageException.cs
- FixedLineResult.cs
- StorageInfo.cs
- ResourceSet.cs
- LogWriteRestartAreaState.cs
- Zone.cs
- ISAPIWorkerRequest.cs
- MappingModelBuildProvider.cs
- FamilyCollection.cs
- SmtpClient.cs
- TextUtf8RawTextWriter.cs
- HttpListenerContext.cs
- SettingsProperty.cs
- MergeFilterQuery.cs
- RoleGroupCollection.cs
- CancelEventArgs.cs
- EntityWrapperFactory.cs
- LineSegment.cs
- ConfigurationSection.cs
- SqlProvider.cs
- _Semaphore.cs
- SqlCaseSimplifier.cs
- SymbolPair.cs
- TableProviderWrapper.cs
- DataSourceGroupCollection.cs
- MasterPage.cs
- Schema.cs
- Mappings.cs
- TemplateContainer.cs
- RijndaelManaged.cs
- AttributeQuery.cs
- ScrollEventArgs.cs
- _ProxyRegBlob.cs
- StylusPointProperties.cs
- SizeAnimationBase.cs
- UnsafeMethods.cs
- SystemBrushes.cs