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
- ServiceHostFactory.cs
- unitconverter.cs
- Int32Rect.cs
- TwoPhaseCommit.cs
- VersionPair.cs
- XmlSignatureManifest.cs
- TextTreeTextElementNode.cs
- _KerberosClient.cs
- HitTestResult.cs
- ConnectionsZoneAutoFormat.cs
- TailPinnedEventArgs.cs
- OleDbSchemaGuid.cs
- DynamicRenderer.cs
- HttpModuleAction.cs
- Permission.cs
- SID.cs
- IODescriptionAttribute.cs
- AnonymousIdentificationSection.cs
- GridToolTip.cs
- ActivityExecutionFilter.cs
- TextCharacters.cs
- BackgroundWorker.cs
- TypeBuilder.cs
- SQLDateTimeStorage.cs
- InterleavedZipPartStream.cs
- RootAction.cs
- HtmlFormWrapper.cs
- WorkflowMessageEventArgs.cs
- FunctionDescription.cs
- SqlException.cs
- BinaryFormatter.cs
- CustomAssemblyResolver.cs
- XPathSelfQuery.cs
- Cursor.cs
- WebPartDisplayModeCancelEventArgs.cs
- ProviderConnectionPoint.cs
- Content.cs
- RectAnimationClockResource.cs
- ToolStripDropDownMenu.cs
- RowUpdatingEventArgs.cs
- TreeView.cs
- ItemDragEvent.cs
- TextStore.cs
- CapabilitiesAssignment.cs
- DESCryptoServiceProvider.cs
- Stroke.cs
- LocatorManager.cs
- BatchParser.cs
- UserControlParser.cs
- InkCanvasInnerCanvas.cs
- OutputCache.cs
- Panel.cs
- InternalControlCollection.cs
- GenericTransactionFlowAttribute.cs
- SystemWebSectionGroup.cs
- ClosableStream.cs
- ListBox.cs
- DbConnectionStringCommon.cs
- ProviderConnectionPointCollection.cs
- ListViewDataItem.cs
- ExecutionContext.cs
- UnicodeEncoding.cs
- SqlWebEventProvider.cs
- DataSysAttribute.cs
- UnsafeNativeMethodsMilCoreApi.cs
- AudioStateChangedEventArgs.cs
- XmlEntity.cs
- DemultiplexingDispatchMessageFormatter.cs
- ParameterModifier.cs
- UpdatePanelTrigger.cs
- CustomTypeDescriptor.cs
- AesManaged.cs
- COMException.cs
- TextServicesCompartmentContext.cs
- RequestedSignatureDialog.cs
- ListDataBindEventArgs.cs
- ParallelTimeline.cs
- TrustSection.cs
- DataGridBoundColumn.cs
- StorageMappingItemLoader.cs
- ListControlConvertEventArgs.cs
- SafeFileMappingHandle.cs
- InputScopeManager.cs
- DetailsViewPagerRow.cs
- GroupBox.cs
- DataServiceBehavior.cs
- WrapPanel.cs
- EnterpriseServicesHelper.cs
- WebScriptEndpointElement.cs
- ModelVisual3D.cs
- HttpAsyncResult.cs
- CompilerLocalReference.cs
- BlurEffect.cs
- DelegatedStream.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- EncoderNLS.cs
- AnnotationResource.cs
- StorageComplexTypeMapping.cs
- FontStretch.cs
- ZipIOExtraFieldZip64Element.cs