Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.ServiceModel.Activities / System / ServiceModel / XamlIntegration / ServiceXNameTypeConverter.cs / 1305376 / ServiceXNameTypeConverter.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel.XamlIntegration
{
using System.ComponentModel;
using System.Globalization;
using System.Runtime;
using System.Xml.Linq;
public class ServiceXNameTypeConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
return XNameTypeConverterHelper.CanConvertFrom(sourceType);
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
string stringValue = value as string;
if (!string.IsNullOrEmpty(stringValue))
{
if (!IsQualifiedName(stringValue))
{
// We want the name to remain unqualified; we don't want XNameTypeConverter to add the default namespace
return XName.Get(stringValue);
}
}
return XNameTypeConverterHelper.ConvertFrom(context, value) ?? base.ConvertFrom(context, culture, value);
}
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
return XNameTypeConverterHelper.CanConvertTo(destinationType);
}
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{
XName name = value as XName;
if (destinationType == typeof(string) && name != null)
{
if (name.Namespace == XNamespace.None)
{
// return unqualified name
return name.LocalName;
}
else
{
string result = (string)(XNameTypeConverterHelper.ConvertTo(context, value, destinationType) ??
base.ConvertTo(context, culture, value, destinationType));
if (IsQualifiedName(result))
{
return result;
}
else
{
// The name is in the default XAML namespace, so we need to fully-qualify it,
// or we'll interpret it as unqualified in ConvertFrom
// Also need to escape the {} so it doesn't get interpreted as MarkupExtension
return name.ToString().Replace("{","{{").Replace("}","}}");
}
}
}
else
{
return XNameTypeConverterHelper.ConvertTo(context, value, destinationType) ??
base.ConvertTo(context, culture, value, destinationType);
}
}
bool IsQualifiedName(string name)
{
return (name.IndexOf(':') >= 1) || (name.Length > 0 && name[0] == '{');
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SecurityPolicySection.cs
- ObjectConverter.cs
- FontFamilyValueSerializer.cs
- AttributeCollection.cs
- ImmComposition.cs
- FormViewInsertedEventArgs.cs
- PropertyEntry.cs
- HttpContext.cs
- ResourceDefaultValueAttribute.cs
- Rotation3D.cs
- BCryptSafeHandles.cs
- GridErrorDlg.cs
- EntityContainerEmitter.cs
- XamlReaderHelper.cs
- QilChoice.cs
- ToolboxItem.cs
- SessionStateSection.cs
- CompilerGlobalScopeAttribute.cs
- DataPagerCommandEventArgs.cs
- TabItemWrapperAutomationPeer.cs
- NavigationWindowAutomationPeer.cs
- DoubleUtil.cs
- ParserHooks.cs
- EventTask.cs
- CodeNamespace.cs
- HostedAspNetEnvironment.cs
- DBNull.cs
- WpfWebRequestHelper.cs
- SqlSelectClauseBuilder.cs
- DataRowView.cs
- XmlUnspecifiedAttribute.cs
- UnitySerializationHolder.cs
- FocusManager.cs
- XmlReader.cs
- ToolboxItemFilterAttribute.cs
- formatter.cs
- SchemeSettingElementCollection.cs
- UnsafeNativeMethods.cs
- ProbeMatchesMessageCD1.cs
- TypeDescriptionProviderAttribute.cs
- DescendantOverDescendantQuery.cs
- SafeHandles.cs
- NeedSkipTokenVisitor.cs
- SmiMetaData.cs
- RegexMatch.cs
- LogicalExpressionEditor.cs
- HebrewNumber.cs
- ConstraintEnumerator.cs
- HMACSHA1.cs
- RuleSettingsCollection.cs
- RawStylusInputReport.cs
- InvalidAsynchronousStateException.cs
- FormViewPageEventArgs.cs
- DocumentOrderQuery.cs
- WindowsPen.cs
- StyleCollectionEditor.cs
- PenLineCapValidation.cs
- RangeValidator.cs
- Literal.cs
- ErrorFormatter.cs
- TrackingServices.cs
- XMLDiffLoader.cs
- CheckBoxField.cs
- VirtualPathProvider.cs
- NumberFunctions.cs
- WindowsAuthenticationModule.cs
- DbConnectionHelper.cs
- GifBitmapDecoder.cs
- ColumnHeaderConverter.cs
- DiagnosticSection.cs
- DesignerCommandAdapter.cs
- FormViewUpdatedEventArgs.cs
- QualifiedCellIdBoolean.cs
- TextSchema.cs
- MessageAction.cs
- FtpRequestCacheValidator.cs
- ClipboardProcessor.cs
- DataIdProcessor.cs
- ApplicationGesture.cs
- Int64AnimationUsingKeyFrames.cs
- listitem.cs
- SizeValueSerializer.cs
- SequentialUshortCollection.cs
- TextDecorationCollection.cs
- BitConverter.cs
- TextTreeDeleteContentUndoUnit.cs
- CodeRegionDirective.cs
- HtmlInputButton.cs
- RemotingConfigParser.cs
- Attributes.cs
- PluralizationServiceUtil.cs
- DoubleAnimationClockResource.cs
- CancellationState.cs
- Win32NamedPipes.cs
- Add.cs
- MouseCaptureWithinProperty.cs
- StyleCollection.cs
- UserInitiatedNavigationPermission.cs
- ActivationServices.cs
- ResXResourceSet.cs