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
- TaskFileService.cs
- ErrorFormatterPage.cs
- StylusButtonCollection.cs
- GeometryCollection.cs
- SimpleRecyclingCache.cs
- ScrollProperties.cs
- querybuilder.cs
- GridViewUpdatedEventArgs.cs
- ContextMenuStrip.cs
- ResourceBinder.cs
- BitStream.cs
- ListViewUpdatedEventArgs.cs
- precedingquery.cs
- AutomationElementIdentifiers.cs
- OrderedEnumerableRowCollection.cs
- WebConfigurationHostFileChange.cs
- QueueProcessor.cs
- DrawListViewItemEventArgs.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- safex509handles.cs
- InvokeProviderWrapper.cs
- CodeAttributeDeclarationCollection.cs
- XmlILStorageConverter.cs
- Pen.cs
- NetworkInformationPermission.cs
- KerberosReceiverSecurityToken.cs
- cookiecollection.cs
- IApplicationTrustManager.cs
- TextChangedEventArgs.cs
- DirectoryNotFoundException.cs
- ReadOnlyCollectionBase.cs
- SourceLocation.cs
- SettingsBindableAttribute.cs
- EmptyQuery.cs
- JsonDeserializer.cs
- ItemsPanelTemplate.cs
- MenuItemBindingCollection.cs
- HandlerBase.cs
- TextSchema.cs
- ReachPageContentCollectionSerializerAsync.cs
- SoapExtensionImporter.cs
- Attributes.cs
- XslException.cs
- NotEqual.cs
- TextTreePropertyUndoUnit.cs
- DetailsViewDeletedEventArgs.cs
- UiaCoreApi.cs
- PaginationProgressEventArgs.cs
- WebPartCloseVerb.cs
- AnnotationAuthorChangedEventArgs.cs
- ProxyAttribute.cs
- SecurityDescriptor.cs
- GradientStopCollection.cs
- GenericUriParser.cs
- QilDataSource.cs
- sitestring.cs
- CodeExporter.cs
- ReadWriteObjectLock.cs
- Registry.cs
- SqlDataSourceStatusEventArgs.cs
- ScriptServiceAttribute.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- BoundsDrawingContextWalker.cs
- UserInitiatedNavigationPermission.cs
- Errors.cs
- HeaderCollection.cs
- DispatchChannelSink.cs
- HtmlHistory.cs
- Compiler.cs
- VisualProxy.cs
- Knowncolors.cs
- GC.cs
- TrustSection.cs
- MulticastNotSupportedException.cs
- Certificate.cs
- RoutedUICommand.cs
- IndexedSelectQueryOperator.cs
- GlobalEventManager.cs
- TreeBuilder.cs
- CreateParams.cs
- SearchForVirtualItemEventArgs.cs
- ConnectionInterfaceCollection.cs
- Sql8ExpressionRewriter.cs
- XmlSortKey.cs
- IsolatedStorageException.cs
- DataBoundControl.cs
- DiagnosticStrings.cs
- QilXmlWriter.cs
- WebPartMenuStyle.cs
- TableCell.cs
- PointLightBase.cs
- DependencyProperty.cs
- X509Certificate.cs
- ControlParameter.cs
- DomNameTable.cs
- LineServicesCallbacks.cs
- DbConnectionInternal.cs
- UIElement.cs
- NamespaceList.cs
- ConvertBinder.cs