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
- CalendarSelectionChangedEventArgs.cs
- SecurityRuntime.cs
- ThousandthOfEmRealDoubles.cs
- StringWriter.cs
- DispatcherOperation.cs
- SvcMapFileLoader.cs
- Avt.cs
- SoapInteropTypes.cs
- Triangle.cs
- BlockCollection.cs
- FormViewInsertedEventArgs.cs
- ProcessHost.cs
- HtmlShimManager.cs
- WeakRefEnumerator.cs
- Themes.cs
- ExpressionTable.cs
- RoutedEvent.cs
- ProfileService.cs
- MbpInfo.cs
- DbSourceCommand.cs
- SeverityFilter.cs
- DbConnectionInternal.cs
- CssTextWriter.cs
- HtmlInputCheckBox.cs
- LinqDataSourceInsertEventArgs.cs
- Transactions.cs
- WebPartDisplayMode.cs
- PackageDigitalSignatureManager.cs
- ConditionCollection.cs
- WeakEventTable.cs
- RegisteredDisposeScript.cs
- DbConnectionInternal.cs
- RegexMatchCollection.cs
- UserNameSecurityToken.cs
- DragEventArgs.cs
- SecurityContext.cs
- CalloutQueueItem.cs
- PeerPresenceInfo.cs
- ContextMenuStripActionList.cs
- BitmapEffectDrawing.cs
- CollectionView.cs
- OdbcConnectionStringbuilder.cs
- Exceptions.cs
- ApplicationDirectoryMembershipCondition.cs
- OleDbTransaction.cs
- XmlTextReaderImplHelpers.cs
- PeerCollaboration.cs
- Pair.cs
- ConfigurationSectionCollection.cs
- UnsafeNativeMethods.cs
- MruCache.cs
- CallSite.cs
- FormatConvertedBitmap.cs
- RequestQueue.cs
- TriState.cs
- RegexParser.cs
- AttributeTableBuilder.cs
- QuadraticBezierSegment.cs
- AmbientProperties.cs
- recordstatescratchpad.cs
- SymbolTable.cs
- Int64Storage.cs
- EncodingDataItem.cs
- UnaryQueryOperator.cs
- DeflateInput.cs
- ListViewInsertionMark.cs
- EntityEntry.cs
- FastEncoderWindow.cs
- DataControlButton.cs
- RenderData.cs
- TransferMode.cs
- DynamicObjectAccessor.cs
- GlyphTypeface.cs
- ServiceMemoryGates.cs
- AssemblyCollection.cs
- EnlistmentState.cs
- XmlSchemaFacet.cs
- ArgumentException.cs
- HostingEnvironmentWrapper.cs
- ExtenderProvidedPropertyAttribute.cs
- SafeSystemMetrics.cs
- ViewBase.cs
- ETagAttribute.cs
- SqlUDTStorage.cs
- SchemaElementDecl.cs
- ProtocolsConfiguration.cs
- FontFamilyConverter.cs
- HwndKeyboardInputProvider.cs
- SpAudioStreamWrapper.cs
- CommonObjectSecurity.cs
- ScaleTransform.cs
- AsyncInvokeOperation.cs
- WebPartZoneBase.cs
- IgnorePropertiesAttribute.cs
- PasswordDeriveBytes.cs
- AnimationException.cs
- FrameworkTemplate.cs
- DataGridHeaderBorder.cs
- ZipPackage.cs
- GlyphElement.cs