Code:
/ DotNET / DotNET / 8.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
- ProgressiveCrcCalculatingStream.cs
- TimeStampChecker.cs
- XmlSchemaAttributeGroup.cs
- TableCellCollection.cs
- HostedHttpContext.cs
- ELinqQueryState.cs
- HtmlInputReset.cs
- GridViewRow.cs
- EntityParameter.cs
- HostingPreferredMapPath.cs
- RC2.cs
- CallbackException.cs
- NonBatchDirectoryCompiler.cs
- DateTimeFormatInfo.cs
- ManipulationStartingEventArgs.cs
- XMLUtil.cs
- ListControlBoundActionList.cs
- WebBrowserNavigatedEventHandler.cs
- TraceSection.cs
- AbsoluteQuery.cs
- ResXFileRef.cs
- IntSecurity.cs
- ObservableDictionary.cs
- CancelAsyncOperationRequest.cs
- ToolboxItemAttribute.cs
- ExitEventArgs.cs
- DataGridViewCellCollection.cs
- ToolStripDropDownItem.cs
- DataGridTextBox.cs
- XmlKeywords.cs
- Rotation3DAnimationBase.cs
- Rfc2898DeriveBytes.cs
- XmlSchemaImporter.cs
- Page.cs
- StoreContentChangedEventArgs.cs
- MultiByteCodec.cs
- TextSpanModifier.cs
- XmlSchemaSimpleTypeUnion.cs
- Parser.cs
- SessionStateContainer.cs
- RemoteWebConfigurationHostServer.cs
- GeneralTransform.cs
- ExclusiveCanonicalizationTransform.cs
- ListenerElementsCollection.cs
- VisualBasicImportReference.cs
- WindowsUserNameCachingSecurityTokenAuthenticator.cs
- ContentFileHelper.cs
- ProviderException.cs
- CodeGroup.cs
- AdornerDecorator.cs
- TextHidden.cs
- SqlWebEventProvider.cs
- CommonProperties.cs
- VolatileEnlistmentState.cs
- SchemaNames.cs
- SplineKeyFrames.cs
- ProcessHostServerConfig.cs
- IsolatedStoragePermission.cs
- ImmComposition.cs
- FilteredAttributeCollection.cs
- TreeNodeSelectionProcessor.cs
- EntityContainer.cs
- DiscreteKeyFrames.cs
- LiteralDesigner.cs
- InvalidWorkflowException.cs
- ParallelTimeline.cs
- DataGridViewColumnCollection.cs
- ValidationErrorEventArgs.cs
- RegexGroupCollection.cs
- PropertyDescriptor.cs
- ExtentJoinTreeNode.cs
- StylusPlugin.cs
- ExchangeUtilities.cs
- RequestCacheValidator.cs
- PagerSettings.cs
- AuthenticationServiceManager.cs
- DesignOnlyAttribute.cs
- FontUnit.cs
- DataGridViewTextBoxEditingControl.cs
- MachineSettingsSection.cs
- ControlOperationBehavior.cs
- ValueSerializer.cs
- AsyncContentLoadedEventArgs.cs
- _PooledStream.cs
- TextSimpleMarkerProperties.cs
- TablePattern.cs
- TypographyProperties.cs
- TextTreeRootTextBlock.cs
- TagNameToTypeMapper.cs
- ThemeInfoAttribute.cs
- MetadataImporter.cs
- PeerApplication.cs
- ObjectSet.cs
- Internal.cs
- XmlUtilWriter.cs
- OrthographicCamera.cs
- OleDbCommandBuilder.cs
- XmlHierarchicalDataSourceView.cs
- XpsResourcePolicy.cs
- HttpNamespaceReservationInstallComponent.cs