Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Net / System / _UriTypeConverter.cs / 1 / _UriTypeConverter.cs
/*++ Copyright (c) 2003 Microsoft Corporation Module Name: _UriTypeConverter.cs Abstract: A default TypeConverter implementation for the System.Uri type Revision History: --*/ namespace System { using System.Globalization; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Reflection; // // A limited conversion is implemented such as to and from string // A conversion to InstanceDescriptor is also provided for design time support. // public class UriTypeConverter: TypeConverter { private UriKind m_UriKind; public UriTypeConverter() : this(UriKind.RelativeOrAbsolute) { } internal UriTypeConverter(UriKind uriKind) { m_UriKind = uriKind; } public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (sourceType == null) throw new ArgumentNullException("sourceType"); if (sourceType == typeof(string)) return true; if (typeof(Uri).IsAssignableFrom(sourceType)) return true; return base.CanConvertFrom(context, sourceType); } // public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) { if (destinationType == typeof(InstanceDescriptor)) return true; if (destinationType == typeof(string)) return true; if (destinationType == typeof(Uri)) return true; return base.CanConvertTo(context, destinationType); } // public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { string uriString = value as string; if (uriString != null) return new Uri(uriString, m_UriKind); Uri uri = value as Uri; if (uri != null) return new Uri(uri.OriginalString, m_UriKind == UriKind.RelativeOrAbsolute ? uri.IsAbsoluteUri ? UriKind.Absolute : UriKind.Relative : m_UriKind); return base.ConvertFrom(context, culture, value); } // public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { Uri uri = value as Uri; if (uri != null && destinationType == typeof(InstanceDescriptor)) { ConstructorInfo ci = typeof(Uri).GetConstructor(BindingFlags.Public | BindingFlags.Instance, null, new Type[]{typeof(string), typeof(UriKind)}, null); return new InstanceDescriptor(ci, new object[] { uri.OriginalString, m_UriKind == UriKind.RelativeOrAbsolute ? uri.IsAbsoluteUri ? UriKind.Absolute : UriKind.Relative : m_UriKind }); } if (uri != null && destinationType == typeof(string)) return uri.OriginalString; if (uri != null && destinationType == typeof(Uri)) return new Uri(uri.OriginalString, m_UriKind == UriKind.RelativeOrAbsolute ? uri.IsAbsoluteUri ? UriKind.Absolute : UriKind.Relative : m_UriKind); return base.ConvertTo(context, culture, value, destinationType); } // public override bool IsValid(ITypeDescriptorContext context, object value) { string str = value as string; Uri temp; if (str != null) return Uri.TryCreate(str, m_UriKind, out temp); return value is Uri; } } }
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- NativeMethods.cs
- DefaultProxySection.cs
- SByteStorage.cs
- UpdatePanelTrigger.cs
- HostProtectionPermission.cs
- TCEAdapterGenerator.cs
- TraceHandler.cs
- NetNamedPipeBindingElement.cs
- BaseCodeDomTreeGenerator.cs
- AttachedPropertyMethodSelector.cs
- RelationshipFixer.cs
- ToolStripManager.cs
- FolderBrowserDialogDesigner.cs
- HTTPNotFoundHandler.cs
- TextHintingModeValidation.cs
- FileDialog.cs
- Control.cs
- SqlUserDefinedAggregateAttribute.cs
- ObjectToIdCache.cs
- DesignerTransaction.cs
- ControlAdapter.cs
- SchemaCollectionPreprocessor.cs
- DataGridViewCellValidatingEventArgs.cs
- NullRuntimeConfig.cs
- XmlSerializerNamespaces.cs
- __Filters.cs
- GridEntryCollection.cs
- SurrogateSelector.cs
- MachineKeySection.cs
- StreamInfo.cs
- GridProviderWrapper.cs
- OdbcCommand.cs
- AdRotator.cs
- IsolatedStoragePermission.cs
- HttpConfigurationContext.cs
- MulticastOption.cs
- ComNativeDescriptor.cs
- Win32Interop.cs
- AtomServiceDocumentSerializer.cs
- CodeAttributeDeclarationCollection.cs
- GridView.cs
- EventLogPermissionEntryCollection.cs
- SapiAttributeParser.cs
- ClusterRegistryConfigurationProvider.cs
- FigureHelper.cs
- ItemsControlAutomationPeer.cs
- XmlSchemaAttributeGroupRef.cs
- PageCatalogPart.cs
- StringAnimationUsingKeyFrames.cs
- WebScriptMetadataMessageEncoderFactory.cs
- DataGridViewComboBoxColumn.cs
- XamlSerializerUtil.cs
- ModifierKeysConverter.cs
- DataPagerFieldItem.cs
- ResolvedKeyFrameEntry.cs
- BindingOperations.cs
- Delegate.cs
- DescriptionAttribute.cs
- ClientBuildManager.cs
- BamlRecordWriter.cs
- WindowsIPAddress.cs
- FlowLayout.cs
- SqlProviderManifest.cs
- ToolStripArrowRenderEventArgs.cs
- MenuItemBinding.cs
- XPathNavigatorKeyComparer.cs
- ResourceWriter.cs
- Parser.cs
- ConfigXmlText.cs
- MenuAutoFormat.cs
- GlobalItem.cs
- PrimitiveCodeDomSerializer.cs
- CodeValidator.cs
- IsolatedStorageFile.cs
- ListDictionaryInternal.cs
- HostingPreferredMapPath.cs
- DrawingContextWalker.cs
- GenericTypeParameterBuilder.cs
- BitmapEffectState.cs
- DataPagerFieldCommandEventArgs.cs
- DrawItemEvent.cs
- TrustManagerMoreInformation.cs
- SqlNotificationEventArgs.cs
- DeploymentSection.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- DrawListViewItemEventArgs.cs
- IndentTextWriter.cs
- XmlAttributeCollection.cs
- AxisAngleRotation3D.cs
- SQLCharsStorage.cs
- CultureInfoConverter.cs
- SectionVisual.cs
- LoadRetryStrategyFactory.cs
- GroupByQueryOperator.cs
- DetailsViewUpdateEventArgs.cs
- DateTimeOffset.cs
- XmlSchemaNotation.cs
- WaitHandleCannotBeOpenedException.cs
- ShimAsPublicXamlType.cs
- PinnedBufferMemoryStream.cs