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
- DbParameterCollectionHelper.cs
- StylusEventArgs.cs
- StyleXamlParser.cs
- Rotation3DAnimationBase.cs
- ScriptReferenceEventArgs.cs
- HtmlFormWrapper.cs
- SolidBrush.cs
- TextElementEnumerator.cs
- SoapTransportImporter.cs
- ActivityDesigner.cs
- XmlHierarchicalDataSourceView.cs
- BufferedReadStream.cs
- BuildProvidersCompiler.cs
- TypeUsageBuilder.cs
- Win32Native.cs
- WrappedIUnknown.cs
- WpfGeneratedKnownTypes.cs
- InputProviderSite.cs
- SmtpNtlmAuthenticationModule.cs
- SqlTrackingService.cs
- DesignerProperties.cs
- cookie.cs
- EventProviderTraceListener.cs
- WizardStepBase.cs
- TreeNode.cs
- RetrieveVirtualItemEventArgs.cs
- XmlFormatExtensionAttribute.cs
- DeviceContext.cs
- DispatcherEventArgs.cs
- TargetParameterCountException.cs
- ImageInfo.cs
- ProviderUtil.cs
- RouteCollection.cs
- CodeThrowExceptionStatement.cs
- HandlerWithFactory.cs
- XmlSchemaRedefine.cs
- ContentHostHelper.cs
- Pair.cs
- PhysicalAddress.cs
- WsdlBuildProvider.cs
- DBNull.cs
- ThreadExceptionDialog.cs
- StyleModeStack.cs
- SecuritySessionFilter.cs
- SvcMapFile.cs
- AttachmentService.cs
- Span.cs
- AppSettingsExpressionBuilder.cs
- CatchBlock.cs
- WebDescriptionAttribute.cs
- DiscoveryOperationContextExtension.cs
- XmlBaseReader.cs
- CodeDomConfigurationHandler.cs
- FixedSOMImage.cs
- RadioButtonBaseAdapter.cs
- TreeNodeClickEventArgs.cs
- rsa.cs
- InstanceView.cs
- MetadataArtifactLoaderCompositeFile.cs
- DataTableReaderListener.cs
- DBCommandBuilder.cs
- DesignerForm.cs
- Fx.cs
- XmlQueryCardinality.cs
- TaskFormBase.cs
- Part.cs
- IriParsingElement.cs
- FlowLayoutPanelDesigner.cs
- ResourceDescriptionAttribute.cs
- WaitForChangedResult.cs
- RectIndependentAnimationStorage.cs
- SiteMapNode.cs
- EntityClientCacheEntry.cs
- Filter.cs
- FileSystemWatcher.cs
- DefaultMemberAttribute.cs
- dataobject.cs
- ContextActivityUtils.cs
- EntityDataSourceView.cs
- StringSorter.cs
- ManagementObjectSearcher.cs
- OverrideMode.cs
- SecurityContextKeyIdentifierClause.cs
- MsmqIntegrationInputChannel.cs
- WmpBitmapDecoder.cs
- RawStylusInputReport.cs
- MulticastOption.cs
- OleDbConnectionInternal.cs
- SafeLocalMemHandle.cs
- ValidateNames.cs
- CustomWebEventKey.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- Html32TextWriter.cs
- RelationshipConverter.cs
- XamlFxTrace.cs
- Panel.cs
- File.cs
- SchemaTypeEmitter.cs
- TextRangeEditTables.cs
- AccessDataSourceView.cs