Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HttpDebugHandler.cs
- Base64WriteStateInfo.cs
- Terminate.cs
- DetailsView.cs
- listitem.cs
- Vars.cs
- SecurityUtils.cs
- DataTableMapping.cs
- MoveSizeWinEventHandler.cs
- OpenFileDialog.cs
- TextEditorThreadLocalStore.cs
- ProcessStartInfo.cs
- DataObjectFieldAttribute.cs
- StylusPointProperties.cs
- BufferAllocator.cs
- EncoderReplacementFallback.cs
- Binding.cs
- StringValidator.cs
- WebPartManagerInternals.cs
- GAC.cs
- RegexTree.cs
- HttpConfigurationContext.cs
- SoapCodeExporter.cs
- CacheChildrenQuery.cs
- XmlNamedNodeMap.cs
- GatewayIPAddressInformationCollection.cs
- WindowsSysHeader.cs
- M3DUtil.cs
- AutomationPropertyInfo.cs
- PlainXmlDeserializer.cs
- BamlRecordWriter.cs
- MenuEventArgs.cs
- CodeNamespaceImport.cs
- DocumentXPathNavigator.cs
- DebugView.cs
- NamespaceCollection.cs
- StringToken.cs
- SessionEndingCancelEventArgs.cs
- XmlILOptimizerVisitor.cs
- MembershipValidatePasswordEventArgs.cs
- ResourceExpressionBuilder.cs
- ErrorStyle.cs
- SchemaTableOptionalColumn.cs
- DataObjectEventArgs.cs
- BasicCellRelation.cs
- WindowsEditBoxRange.cs
- ItemList.cs
- XamlFigureLengthSerializer.cs
- BinHexEncoder.cs
- BoolLiteral.cs
- SafeHandle.cs
- CodeDomLocalizationProvider.cs
- XmlSchema.cs
- GeneralTransform.cs
- NativeObjectSecurity.cs
- PaintEvent.cs
- DatatypeImplementation.cs
- MailAddress.cs
- CommonObjectSecurity.cs
- ObjectSet.cs
- PropertyManager.cs
- BinaryFormatterWriter.cs
- ArraySet.cs
- OutputCacheModule.cs
- IdentityManager.cs
- VisualState.cs
- ByteRangeDownloader.cs
- MetadataItem_Static.cs
- TypeCollectionPropertyEditor.cs
- InternalTypeHelper.cs
- BaseTemplateBuildProvider.cs
- UIElementPropertyUndoUnit.cs
- ListViewItemMouseHoverEvent.cs
- BitmapImage.cs
- TabItemWrapperAutomationPeer.cs
- CompoundFileReference.cs
- CacheAxisQuery.cs
- MatrixTransform.cs
- XmlArrayItemAttribute.cs
- AspNetRouteServiceHttpHandler.cs
- ExpressionBuilderContext.cs
- ClientFormsAuthenticationCredentials.cs
- CheckBoxField.cs
- ReadOnlyObservableCollection.cs
- CompressStream.cs
- _SecureChannel.cs
- ClientSideQueueItem.cs
- ArraySortHelper.cs
- CapabilitiesAssignment.cs
- TakeQueryOptionExpression.cs
- PropertyEmitter.cs
- Semaphore.cs
- MemberAssignment.cs
- loginstatus.cs
- ColumnProvider.cs
- ArrayTypeMismatchException.cs
- EasingFunctionBase.cs
- AssociationSet.cs
- Block.cs
- ListDictionary.cs