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
- TextModifierScope.cs
- ThrowHelper.cs
- AsyncStreamReader.cs
- HtmlMeta.cs
- DemultiplexingClientMessageFormatter.cs
- ExtendedTransformFactory.cs
- TextSelectionHelper.cs
- LogArchiveSnapshot.cs
- SqlClientPermission.cs
- ErrorsHelper.cs
- ReadWriteObjectLock.cs
- ConfigurationSection.cs
- CommandField.cs
- BasicViewGenerator.cs
- ToolStripDropDownButton.cs
- Calendar.cs
- ValidationEventArgs.cs
- CustomAttributeSerializer.cs
- ScriptingWebServicesSectionGroup.cs
- SynchronizedPool.cs
- NumericExpr.cs
- input.cs
- DesignerCategoryAttribute.cs
- ClipboardData.cs
- QilVisitor.cs
- SecurityException.cs
- CodeSubDirectoriesCollection.cs
- ListBoxAutomationPeer.cs
- GridViewPageEventArgs.cs
- XmlSchemaSimpleContentExtension.cs
- Queue.cs
- Pkcs7Signer.cs
- LogEntryHeaderDeserializer.cs
- PathFigure.cs
- Screen.cs
- DependencyPropertyDescriptor.cs
- messageonlyhwndwrapper.cs
- CodeAttributeArgument.cs
- ViewBox.cs
- xsdvalidator.cs
- AsyncResult.cs
- RestHandlerFactory.cs
- MsmqReceiveHelper.cs
- DotExpr.cs
- BehaviorDragDropEventArgs.cs
- XmlLangPropertyAttribute.cs
- HintTextConverter.cs
- ConfigurationSettings.cs
- ComponentConverter.cs
- DependencyObject.cs
- OperatingSystemVersionCheck.cs
- ResolveNextArgumentWorkItem.cs
- SafeEventLogReadHandle.cs
- Track.cs
- FastEncoder.cs
- CryptoProvider.cs
- SHA384Managed.cs
- DataBindingCollectionEditor.cs
- objectresult_tresulttype.cs
- FileDialog_Vista.cs
- RegionIterator.cs
- GridViewUpdateEventArgs.cs
- Msmq4PoisonHandler.cs
- EventMappingSettings.cs
- ForwardPositionQuery.cs
- ThreadStateException.cs
- CoTaskMemHandle.cs
- PassportPrincipal.cs
- LightweightEntityWrapper.cs
- CharacterString.cs
- OutOfMemoryException.cs
- TabControlAutomationPeer.cs
- NumericExpr.cs
- Model3D.cs
- SingleBodyParameterMessageFormatter.cs
- ConfigurationSettings.cs
- GroupItemAutomationPeer.cs
- WebPartManager.cs
- Monitor.cs
- OLEDB_Util.cs
- SizeAnimationUsingKeyFrames.cs
- DelegatingHeader.cs
- InputGestureCollection.cs
- FamilyCollection.cs
- SqlBulkCopyColumnMapping.cs
- GregorianCalendarHelper.cs
- DeclarativeCatalogPart.cs
- DateTimeFormatInfoScanner.cs
- TagPrefixInfo.cs
- XmlCollation.cs
- InvokeHandlers.cs
- Menu.cs
- WindowsTokenRoleProvider.cs
- PlatformNotSupportedException.cs
- DataViewListener.cs
- EnumMemberAttribute.cs
- StatusBarPanelClickEvent.cs
- Column.cs
- FileDialogPermission.cs
- ContractDescription.cs