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
- URLIdentityPermission.cs
- SByteStorage.cs
- AppDomainAttributes.cs
- AssemblyName.cs
- BuildProvidersCompiler.cs
- WebPartCollection.cs
- EmptyReadOnlyDictionaryInternal.cs
- Timer.cs
- ProvidersHelper.cs
- TemplateBamlTreeBuilder.cs
- AccessKeyManager.cs
- OracleTransaction.cs
- SqlXml.cs
- MatrixCamera.cs
- BufferCache.cs
- WebPart.cs
- ForceCopyBuildProvider.cs
- ErrorFormatter.cs
- BehaviorEditorPart.cs
- JsonDeserializer.cs
- ProgressiveCrcCalculatingStream.cs
- TextSelectionProcessor.cs
- SnapshotChangeTrackingStrategy.cs
- NonSerializedAttribute.cs
- ObjectFullSpanRewriter.cs
- ErrorWebPart.cs
- AsyncResult.cs
- RequestCache.cs
- TrackBar.cs
- xml.cs
- WebPartZoneBase.cs
- ArrayExtension.cs
- ThaiBuddhistCalendar.cs
- BindingNavigator.cs
- QuadTree.cs
- DummyDataSource.cs
- Polyline.cs
- QuotedStringWriteStateInfo.cs
- TimeManager.cs
- BuilderPropertyEntry.cs
- ListBoxItem.cs
- EntitySetBaseCollection.cs
- EventLogReader.cs
- ThreadStaticAttribute.cs
- CodeLabeledStatement.cs
- InvalidOleVariantTypeException.cs
- RealizationContext.cs
- ClientFormsIdentity.cs
- CacheOutputQuery.cs
- TypeConverterHelper.cs
- KeyEvent.cs
- TextEditorMouse.cs
- Stacktrace.cs
- HashAlgorithm.cs
- StrokeCollectionConverter.cs
- PassportIdentity.cs
- RemoteWebConfigurationHost.cs
- VirtualPathProvider.cs
- RenderData.cs
- BrowserDefinition.cs
- BlockExpression.cs
- SmiEventSink.cs
- _FixedSizeReader.cs
- UpWmlMobileTextWriter.cs
- NavigationEventArgs.cs
- SQLRoleProvider.cs
- TdsParserSessionPool.cs
- SettingsBase.cs
- ProviderMetadata.cs
- ScrollProperties.cs
- BinaryReader.cs
- StopRoutingHandler.cs
- ServicePointManager.cs
- Rect3D.cs
- HttpStaticObjectsCollectionBase.cs
- KeyInstance.cs
- EpmTargetTree.cs
- StrongNameIdentityPermission.cs
- MaterialGroup.cs
- SqlNodeTypeOperators.cs
- InteropBitmapSource.cs
- CompensatableTransactionScopeActivityDesigner.cs
- StringFunctions.cs
- ObjectDataSourceMethodEventArgs.cs
- SafeViewOfFileHandle.cs
- metadatamappinghashervisitor.cs
- FillErrorEventArgs.cs
- OdbcConnectionFactory.cs
- ClassHandlersStore.cs
- EntityDataSourceWrapperCollection.cs
- ResourceSet.cs
- TypefaceCollection.cs
- ServiceDescriptionImporter.cs
- __Filters.cs
- UiaCoreTypesApi.cs
- HtmlTextBoxAdapter.cs
- AppDomainUnloadedException.cs
- MultiSelectRootGridEntry.cs
- XamlDesignerSerializationManager.cs
- SqlBulkCopy.cs