Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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; } } } // 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
- UriSection.cs
- RemotingServices.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- LogRestartAreaEnumerator.cs
- CngProperty.cs
- ListSortDescriptionCollection.cs
- CmsInterop.cs
- WebReferenceOptions.cs
- ToolConsole.cs
- OleDbReferenceCollection.cs
- WinFormsSpinner.cs
- InstalledVoice.cs
- DoubleAnimation.cs
- ProcessManager.cs
- PerformanceCountersElement.cs
- ConfigurationValue.cs
- ContainerUIElement3D.cs
- TypedTableBase.cs
- CompilerGlobalScopeAttribute.cs
- WebConfigurationHostFileChange.cs
- BasicBrowserDialog.cs
- ClassHandlersStore.cs
- ContextMenuStrip.cs
- HttpRequestMessageProperty.cs
- CalendarDay.cs
- DataGridViewCellPaintingEventArgs.cs
- TextStore.cs
- XPathCompileException.cs
- QueryAsyncResult.cs
- MarginCollapsingState.cs
- InputMethod.cs
- ScrollChrome.cs
- Attributes.cs
- DocobjHost.cs
- ReceiveActivityDesignerTheme.cs
- ExpressionPrefixAttribute.cs
- GraphicsContext.cs
- WindowExtensionMethods.cs
- NetCodeGroup.cs
- COM2ComponentEditor.cs
- AmbientProperties.cs
- TextRunProperties.cs
- EntityKey.cs
- ImageSourceConverter.cs
- Vector3DKeyFrameCollection.cs
- ComponentCommands.cs
- Mappings.cs
- DataPagerCommandEventArgs.cs
- MD5CryptoServiceProvider.cs
- XmlILModule.cs
- ScriptResourceHandler.cs
- SortFieldComparer.cs
- CaseInsensitiveHashCodeProvider.cs
- VoiceChangeEventArgs.cs
- PeerToPeerException.cs
- ControlOperationBehavior.cs
- EventMap.cs
- Int32CollectionValueSerializer.cs
- Types.cs
- MultiPageTextView.cs
- HitTestWithGeometryDrawingContextWalker.cs
- Profiler.cs
- SkewTransform.cs
- FrameworkContextData.cs
- XmlTypeMapping.cs
- KeyValuePairs.cs
- BufferedWebEventProvider.cs
- ColumnCollection.cs
- NativeMethods.cs
- Selection.cs
- TargetInvocationException.cs
- ZoneButton.cs
- Completion.cs
- WebPartConnectionsCancelEventArgs.cs
- SecurityState.cs
- HebrewNumber.cs
- SoapSchemaMember.cs
- ConfigXmlText.cs
- OpenFileDialog.cs
- BrushMappingModeValidation.cs
- RemoteWebConfigurationHost.cs
- PhysicalOps.cs
- MessageBox.cs
- Point3DKeyFrameCollection.cs
- StrokeDescriptor.cs
- NumberSubstitution.cs
- Rfc2898DeriveBytes.cs
- StreamUpdate.cs
- TextLine.cs
- DataControlPagerLinkButton.cs
- ElementUtil.cs
- _ConnectOverlappedAsyncResult.cs
- HttpCacheVary.cs
- MultiPageTextView.cs
- PropertyGridView.cs
- CodeCommentStatementCollection.cs
- SafeFileMapViewHandle.cs
- HeaderCollection.cs
- BindingWorker.cs
- _AutoWebProxyScriptEngine.cs