Code:
/ 4.0 / 4.0 / 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. /*++ 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
- PageAdapter.cs
- ExpressionBindingsDialog.cs
- _ConnectOverlappedAsyncResult.cs
- StringAttributeCollection.cs
- GrammarBuilderWildcard.cs
- XmlEncodedRawTextWriter.cs
- documentation.cs
- XmlAggregates.cs
- SplitterDesigner.cs
- EraserBehavior.cs
- RemotingConfigParser.cs
- BuildManager.cs
- CollectionExtensions.cs
- CachedCompositeFamily.cs
- ResponseStream.cs
- PathFigureCollection.cs
- GorillaCodec.cs
- PropertyPanel.cs
- ComponentResourceKeyConverter.cs
- RequestBringIntoViewEventArgs.cs
- TreeNode.cs
- ProfileSection.cs
- GeometryHitTestParameters.cs
- OAVariantLib.cs
- SolidBrush.cs
- ReleaseInstanceMode.cs
- StandardToolWindows.cs
- InternalRelationshipCollection.cs
- UserNamePasswordValidator.cs
- FtpWebRequest.cs
- CodeChecksumPragma.cs
- XmlSchemaCollection.cs
- ToolStripSplitButton.cs
- CreateParams.cs
- GridViewRowCollection.cs
- NestedContainer.cs
- SoundPlayerAction.cs
- XmlDataSourceNodeDescriptor.cs
- Run.cs
- StreamMarshaler.cs
- MarkupObject.cs
- BindingNavigator.cs
- TypeSystem.cs
- BufferModeSettings.cs
- WinCategoryAttribute.cs
- Subtree.cs
- WindowsGraphicsCacheManager.cs
- VectorAnimation.cs
- indexingfiltermarshaler.cs
- MediaElementAutomationPeer.cs
- ClientTargetSection.cs
- UIEndRequest.cs
- MembershipPasswordException.cs
- Stylus.cs
- HMAC.cs
- Set.cs
- ItemChangedEventArgs.cs
- MatcherBuilder.cs
- CTreeGenerator.cs
- Composition.cs
- RawKeyboardInputReport.cs
- RegexCompiler.cs
- ObjectSet.cs
- shaperfactory.cs
- _SslSessionsCache.cs
- SapiInterop.cs
- ApplicationActivator.cs
- DataKey.cs
- SystemParameters.cs
- ZoneIdentityPermission.cs
- SrgsOneOf.cs
- ResourceExpressionBuilder.cs
- WebPageTraceListener.cs
- ElasticEase.cs
- ManifestResourceInfo.cs
- CFStream.cs
- ZipIOExtraFieldElement.cs
- SimpleMailWebEventProvider.cs
- DbDataAdapter.cs
- AutomationPatternInfo.cs
- EventProviderClassic.cs
- CommandBinding.cs
- SkinBuilder.cs
- RadioButtonBaseAdapter.cs
- NoClickablePointException.cs
- Configuration.cs
- XPathException.cs
- EdmError.cs
- RuntimeHandles.cs
- LineBreak.cs
- SnapshotChangeTrackingStrategy.cs
- RedirectionProxy.cs
- HandlerFactoryWrapper.cs
- InputLanguageEventArgs.cs
- HelpInfo.cs
- LineGeometry.cs
- EndpointNotFoundException.cs
- Point.cs
- Size3D.cs
- HttpContextServiceHost.cs