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
- ICspAsymmetricAlgorithm.cs
- TreeBuilderXamlTranslator.cs
- SqlErrorCollection.cs
- userdatakeys.cs
- X509SecurityToken.cs
- SchemaLookupTable.cs
- XhtmlBasicImageAdapter.cs
- ListBindingHelper.cs
- ComboBox.cs
- QilXmlWriter.cs
- ThicknessConverter.cs
- ProofTokenCryptoHandle.cs
- SpeechRecognitionEngine.cs
- EntityDataSourceConfigureObjectContextPanel.cs
- ChtmlFormAdapter.cs
- ActivityXRefConverter.cs
- DataPagerFieldItem.cs
- FileLogRecord.cs
- QuaternionRotation3D.cs
- Utils.cs
- MemberCollection.cs
- DataSysAttribute.cs
- GregorianCalendar.cs
- XmlWriterSettings.cs
- CompatibleComparer.cs
- PackWebResponse.cs
- PersonalizationEntry.cs
- Localizer.cs
- SpecularMaterial.cs
- Image.cs
- TableColumnCollection.cs
- DirectionalLight.cs
- Util.cs
- QueryStringParameter.cs
- CacheChildrenQuery.cs
- Task.cs
- DataTable.cs
- DataSourceXmlSubItemAttribute.cs
- ReceiveContext.cs
- ProtocolsConfiguration.cs
- TimeSpanStorage.cs
- TypeInfo.cs
- CardSpaceSelector.cs
- XmlSerializerSection.cs
- DesignTableCollection.cs
- ChtmlCalendarAdapter.cs
- Matrix3DValueSerializer.cs
- Margins.cs
- ConnectorDragDropGlyph.cs
- DataPagerFieldCommandEventArgs.cs
- SafeIUnknown.cs
- HttpRawResponse.cs
- EventHandlers.cs
- LineSegment.cs
- DBSqlParserColumn.cs
- DetailsViewRow.cs
- HtmlHead.cs
- MatrixUtil.cs
- ObjectListFieldCollection.cs
- RecognizedAudio.cs
- storepermission.cs
- PrimitiveType.cs
- CodePageEncoding.cs
- ScopeCollection.cs
- FileSecurity.cs
- MonikerSyntaxException.cs
- ServiceObjectContainer.cs
- MethodAccessException.cs
- DataGridViewCellStyleEditor.cs
- EventBuilder.cs
- ILGen.cs
- SchemeSettingElement.cs
- GridViewPageEventArgs.cs
- MemoryFailPoint.cs
- ContentPlaceHolder.cs
- AndCondition.cs
- FigureHelper.cs
- FilterException.cs
- ComponentRenameEvent.cs
- FontWeight.cs
- ToolStripSeparator.cs
- VectorCollectionConverter.cs
- NameTable.cs
- GenerateTemporaryAssemblyTask.cs
- RequestCacheManager.cs
- SubpageParagraph.cs
- ToolStripPanelRenderEventArgs.cs
- InheritanceRules.cs
- RequestQueryParser.cs
- MaterialGroup.cs
- mda.cs
- CodeAttributeDeclarationCollection.cs
- FixedSOMLineCollection.cs
- TemplateControlParser.cs
- SafeRegistryKey.cs
- IntPtr.cs
- AppearanceEditorPart.cs
- CodeGenerator.cs
- DataGridViewCell.cs
- Config.cs