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
- SymbolMethod.cs
- Environment.cs
- FixedDocument.cs
- DataObjectFieldAttribute.cs
- MessageSecurityProtocolFactory.cs
- ScriptControlManager.cs
- KeyPressEvent.cs
- Win32PrintDialog.cs
- RectKeyFrameCollection.cs
- SafeReadContext.cs
- PathGeometry.cs
- WebDisplayNameAttribute.cs
- TableCellAutomationPeer.cs
- storepermissionattribute.cs
- AmbientLight.cs
- ProxyHelper.cs
- NewExpression.cs
- _NetworkingPerfCounters.cs
- RequestTimeoutManager.cs
- XmlMtomWriter.cs
- ServiceNameElementCollection.cs
- XmlDictionaryString.cs
- XPathEmptyIterator.cs
- HttpCookieCollection.cs
- NetSectionGroup.cs
- DbModificationClause.cs
- RuleProcessor.cs
- StyleModeStack.cs
- CommonDialog.cs
- WebPartAuthorizationEventArgs.cs
- EventLogPermissionAttribute.cs
- XmlWriterSettings.cs
- COM2PropertyDescriptor.cs
- WsdlEndpointConversionContext.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- Command.cs
- FreeFormDesigner.cs
- DynamicObjectAccessor.cs
- LinkLabelLinkClickedEvent.cs
- CodeAttributeDeclaration.cs
- MessageDispatch.cs
- LongValidatorAttribute.cs
- BitmapCodecInfoInternal.cs
- FamilyCollection.cs
- IconBitmapDecoder.cs
- MarginCollapsingState.cs
- DataGridColumnHeaderItemAutomationPeer.cs
- FormView.cs
- MediaCommands.cs
- DataControlField.cs
- MailAddressCollection.cs
- XmlAnyAttributeAttribute.cs
- SqlCommandSet.cs
- UInt64Storage.cs
- BitmapMetadata.cs
- DetailsViewDeletedEventArgs.cs
- HtmlInputButton.cs
- MessageBox.cs
- XmlSerializerNamespaces.cs
- CompareInfo.cs
- ManagedFilter.cs
- ScrollChrome.cs
- ContainerParaClient.cs
- BitmapEffectState.cs
- DetailsViewActionList.cs
- Decimal.cs
- Matrix3D.cs
- ResourcesGenerator.cs
- TreeSet.cs
- Lazy.cs
- RootBuilder.cs
- SectionInput.cs
- XmlChildEnumerator.cs
- DoubleLinkList.cs
- DocumentXmlWriter.cs
- SslStream.cs
- GeneralTransformCollection.cs
- MimeObjectFactory.cs
- SqlTypesSchemaImporter.cs
- arclist.cs
- SingleStorage.cs
- EntityDataSourceChangedEventArgs.cs
- SortKey.cs
- XmlNodeReader.cs
- EpmContentSerializerBase.cs
- NamespaceDecl.cs
- ScriptComponentDescriptor.cs
- UnsafeNativeMethods.cs
- Number.cs
- TextLineBreak.cs
- EntityParameter.cs
- DataGridViewAutoSizeModeEventArgs.cs
- CompositeDispatchFormatter.cs
- TraceXPathNavigator.cs
- DefaultConfirmation.cs
- HtmlInputReset.cs
- SafeRightsManagementHandle.cs
- EnlistmentState.cs
- AppDomainAttributes.cs
- _FixedSizeReader.cs