Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Net / System / _UriTypeConverter.cs / 1305376 / _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; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RelationshipEndCollection.cs
- SerializerDescriptor.cs
- CryptoHelper.cs
- WebPermission.cs
- SqlCacheDependency.cs
- ConfigurationPermission.cs
- SemanticResultValue.cs
- WeakReferenceKey.cs
- WindowPatternIdentifiers.cs
- PerspectiveCamera.cs
- ProcessHostServerConfig.cs
- ExpressionBuilderContext.cs
- GridItem.cs
- ResourceWriter.cs
- RegexNode.cs
- DataTemplateKey.cs
- RectAnimationUsingKeyFrames.cs
- RadialGradientBrush.cs
- UIElement.cs
- ExceptionValidationRule.cs
- FileAuthorizationModule.cs
- _ProxyRegBlob.cs
- DrawingContext.cs
- Operand.cs
- _ContextAwareResult.cs
- PersonalizableTypeEntry.cs
- SafeEventHandle.cs
- BuildResultCache.cs
- HostDesigntimeLicenseContext.cs
- HtmlInputButton.cs
- AttributeParameterInfo.cs
- ViewSimplifier.cs
- X509CertificateChain.cs
- Range.cs
- BufferModesCollection.cs
- PointIndependentAnimationStorage.cs
- FileSystemEventArgs.cs
- HttpRequestCacheValidator.cs
- _ListenerRequestStream.cs
- CardSpacePolicyElement.cs
- SocketCache.cs
- SerializationException.cs
- CodeDomConfigurationHandler.cs
- ListItemParagraph.cs
- HttpHandlerActionCollection.cs
- WorkflowInstanceSuspendedRecord.cs
- SystemException.cs
- MessageQueueKey.cs
- Package.cs
- FixedHyperLink.cs
- MailSettingsSection.cs
- SQLStringStorage.cs
- StateFinalizationActivity.cs
- CellLabel.cs
- SmtpNegotiateAuthenticationModule.cs
- DesignerContextDescriptor.cs
- ListViewSortEventArgs.cs
- __FastResourceComparer.cs
- RadioButtonPopupAdapter.cs
- BodyGlyph.cs
- FreeIndexList.cs
- ResourceSet.cs
- ActiveXHelper.cs
- MinimizableAttributeTypeConverter.cs
- UpdatePanel.cs
- AsyncPostBackTrigger.cs
- SamlAction.cs
- OuterGlowBitmapEffect.cs
- ContextBase.cs
- StringComparer.cs
- RoutedUICommand.cs
- MeasurementDCInfo.cs
- StubHelpers.cs
- DataGridViewRowStateChangedEventArgs.cs
- DiscoveryReferences.cs
- PatternMatchRules.cs
- FilterQuery.cs
- ToolBarButtonDesigner.cs
- ScrollBarAutomationPeer.cs
- OleDbFactory.cs
- ProcessThread.cs
- AnimationClock.cs
- MetadataItemSerializer.cs
- CompositionAdorner.cs
- KeyNotFoundException.cs
- LicenseManager.cs
- PrintController.cs
- DnsPermission.cs
- DrawingAttributeSerializer.cs
- SecurityTokenResolver.cs
- PackWebResponse.cs
- MediaTimeline.cs
- XsdCachingReader.cs
- FormsAuthenticationConfiguration.cs
- GenericTypeParameterConverter.cs
- GroupBox.cs
- ConfigXmlElement.cs
- ZeroOpNode.cs
- CompoundFileStorageReference.cs
- DefaultAssemblyResolver.cs