Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / System.Runtime.DurableInstancing / System / Runtime / XNameTypeConverter.cs / 1305376 / XNameTypeConverter.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.Runtime
{
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Runtime;
using System.Xaml;
using System.Xml.Linq;
internal static class XNameTypeConverterHelper
{
public static bool CanConvertFrom(Type sourceType)
{
return sourceType == typeof(string);
}
public static object ConvertFrom(ITypeDescriptorContext context, object value)
{
return XNameTypeConverterHelper.ConvertFromHelper(context, value);
}
public static bool CanConvertTo(Type destinationType)
{
return destinationType == typeof(string);
}
public static object ConvertTo(ITypeDescriptorContext context, object value, Type destinationType)
{
return XNameTypeConverterHelper.ConvertToHelper(context, value, destinationType);
}
internal static object ConvertFromHelper(ITypeDescriptorContext context, object value)
{
if (value == null)
{
return null;
}
String stringValue = value as String;
if (stringValue == null)
{
return null;
}
stringValue = stringValue.Trim();
if (stringValue == String.Empty)
{
return null;
}
IXamlNamespaceResolver resolver =
context.GetService(typeof(IXamlNamespaceResolver)) as IXamlNamespaceResolver;
if (resolver == null)
{
return null;
}
if (stringValue[0] == '{')
{
return XName.Get(stringValue);
}
int indexOfColon = stringValue.IndexOf(':');
string prefix, localName;
if (indexOfColon >= 0)
{
prefix = stringValue.Substring(0, indexOfColon);
localName = stringValue.Substring(indexOfColon + 1);
}
else
{
prefix = string.Empty;
localName = stringValue;
}
string ns = resolver.GetNamespace(prefix);
if (ns == null)
{
throw Fx.Exception.AsError(new FormatException(SRCore.CouldNotResolveNamespacePrefix(prefix)));
}
return XName.Get(localName, ns);
}
internal static object ConvertToHelper(ITypeDescriptorContext context, object value, Type destinationType)
{
XName name = value as XName;
if (destinationType == typeof(string) && name != null)
{
if (context != null)
{
var lookupPrefix = (INamespacePrefixLookup)context.GetService(typeof(INamespacePrefixLookup));
if (lookupPrefix != null)
{
string prefix = lookupPrefix.LookupPrefix(name.Namespace.NamespaceName);
if (String.IsNullOrEmpty(prefix))
{
// Default namespace is in scope
//
return name.LocalName;
}
else
{
return prefix + ":" + name.LocalName;
}
}
}
}
return null;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.Runtime
{
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Runtime;
using System.Xaml;
using System.Xml.Linq;
internal static class XNameTypeConverterHelper
{
public static bool CanConvertFrom(Type sourceType)
{
return sourceType == typeof(string);
}
public static object ConvertFrom(ITypeDescriptorContext context, object value)
{
return XNameTypeConverterHelper.ConvertFromHelper(context, value);
}
public static bool CanConvertTo(Type destinationType)
{
return destinationType == typeof(string);
}
public static object ConvertTo(ITypeDescriptorContext context, object value, Type destinationType)
{
return XNameTypeConverterHelper.ConvertToHelper(context, value, destinationType);
}
internal static object ConvertFromHelper(ITypeDescriptorContext context, object value)
{
if (value == null)
{
return null;
}
String stringValue = value as String;
if (stringValue == null)
{
return null;
}
stringValue = stringValue.Trim();
if (stringValue == String.Empty)
{
return null;
}
IXamlNamespaceResolver resolver =
context.GetService(typeof(IXamlNamespaceResolver)) as IXamlNamespaceResolver;
if (resolver == null)
{
return null;
}
if (stringValue[0] == '{')
{
return XName.Get(stringValue);
}
int indexOfColon = stringValue.IndexOf(':');
string prefix, localName;
if (indexOfColon >= 0)
{
prefix = stringValue.Substring(0, indexOfColon);
localName = stringValue.Substring(indexOfColon + 1);
}
else
{
prefix = string.Empty;
localName = stringValue;
}
string ns = resolver.GetNamespace(prefix);
if (ns == null)
{
throw Fx.Exception.AsError(new FormatException(SRCore.CouldNotResolveNamespacePrefix(prefix)));
}
return XName.Get(localName, ns);
}
internal static object ConvertToHelper(ITypeDescriptorContext context, object value, Type destinationType)
{
XName name = value as XName;
if (destinationType == typeof(string) && name != null)
{
if (context != null)
{
var lookupPrefix = (INamespacePrefixLookup)context.GetService(typeof(INamespacePrefixLookup));
if (lookupPrefix != null)
{
string prefix = lookupPrefix.LookupPrefix(name.Namespace.NamespaceName);
if (String.IsNullOrEmpty(prefix))
{
// Default namespace is in scope
//
return name.LocalName;
}
else
{
return prefix + ":" + name.LocalName;
}
}
}
}
return null;
}
}
}
// 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
- BindingContext.cs
- Transform3DGroup.cs
- Evidence.cs
- SerializerDescriptor.cs
- GenericTextProperties.cs
- TrustLevel.cs
- BinaryObjectInfo.cs
- InertiaExpansionBehavior.cs
- QilBinary.cs
- PerformanceCounterCategory.cs
- ProfileServiceManager.cs
- WindowsAltTab.cs
- RolePrincipal.cs
- StylusDevice.cs
- ModuleElement.cs
- EmptyControlCollection.cs
- MissingMemberException.cs
- metadatamappinghashervisitor.cs
- ScrollableControl.cs
- ProfilePropertySettingsCollection.cs
- PropertyDescriptorCollection.cs
- SmtpException.cs
- StyleSelector.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- UnsafeNativeMethods.cs
- WaitHandleCannotBeOpenedException.cs
- AsyncPostBackTrigger.cs
- RowUpdatedEventArgs.cs
- FixedSOMTableRow.cs
- ComplexLine.cs
- GlyphRunDrawing.cs
- ProtocolsSection.cs
- DeferredSelectedIndexReference.cs
- XmlLanguageConverter.cs
- BitmapEffectGroup.cs
- HttpCapabilitiesEvaluator.cs
- DataObjectEventArgs.cs
- MeasureItemEvent.cs
- XmlSiteMapProvider.cs
- StorageFunctionMapping.cs
- CorrelationResolver.cs
- VideoDrawing.cs
- CryptoKeySecurity.cs
- RuntimeHandles.cs
- BaseEntityWrapper.cs
- DataListItem.cs
- CollectionConverter.cs
- linebase.cs
- TabItemWrapperAutomationPeer.cs
- webbrowsersite.cs
- HostProtectionException.cs
- PersistChildrenAttribute.cs
- DebugHandleTracker.cs
- _UriTypeConverter.cs
- XslTransformFileEditor.cs
- DrawingAttributeSerializer.cs
- RankException.cs
- PriorityQueue.cs
- SQLDateTimeStorage.cs
- DataServiceHost.cs
- RenameRuleObjectDialog.cs
- MimeWriter.cs
- EventLogEntry.cs
- IntSecurity.cs
- ExpressionBuilder.cs
- CustomLineCap.cs
- MeasureItemEvent.cs
- DbConnectionInternal.cs
- PageBuildProvider.cs
- MetadataPropertyCollection.cs
- Literal.cs
- PropertyGeneratedEventArgs.cs
- CodeLabeledStatement.cs
- PreProcessInputEventArgs.cs
- BinaryCommonClasses.cs
- MarkupProperty.cs
- SecurityContext.cs
- DataGridViewToolTip.cs
- InvokeProviderWrapper.cs
- DataGridViewLayoutData.cs
- File.cs
- SmtpFailedRecipientException.cs
- WebUtil.cs
- ListView.cs
- DataGridViewCellFormattingEventArgs.cs
- SignedXml.cs
- UpdateExpressionVisitor.cs
- PrivilegeNotHeldException.cs
- ImageField.cs
- RtfToken.cs
- DbLambda.cs
- DataGridCommandEventArgs.cs
- MergablePropertyAttribute.cs
- WebPartsPersonalizationAuthorization.cs
- DelimitedListTraceListener.cs
- ListChangedEventArgs.cs
- X509Utils.cs
- SQLSingle.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- ImageInfo.cs