Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ToolStripOverflow.cs
- SubMenuStyle.cs
- PackageStore.cs
- XDRSchema.cs
- TextServicesDisplayAttributePropertyRanges.cs
- FigureHelper.cs
- SplayTreeNode.cs
- FilteredReadOnlyMetadataCollection.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- JoinSymbol.cs
- util.cs
- XamlPathDataSerializer.cs
- FocusManager.cs
- OdbcTransaction.cs
- XmlElementAttribute.cs
- ControlDesigner.cs
- FontFamily.cs
- CacheOutputQuery.cs
- InvalidateEvent.cs
- ToolStripLabel.cs
- PriorityBinding.cs
- EmbeddedMailObject.cs
- WebPartConnectionsCancelVerb.cs
- DataGridViewCellParsingEventArgs.cs
- XamlSerializerUtil.cs
- AdornedElementPlaceholder.cs
- KnownTypesHelper.cs
- OpCopier.cs
- AssemblyCache.cs
- StyleModeStack.cs
- ResourceAttributes.cs
- FileSystemWatcher.cs
- BaseCollection.cs
- NavigationHelper.cs
- MetadataFile.cs
- RegistryConfigurationProvider.cs
- TableLayoutStyle.cs
- ParentUndoUnit.cs
- GeneralTransformGroup.cs
- GroupQuery.cs
- TypeCollectionPropertyEditor.cs
- StatusBar.cs
- DispatcherHooks.cs
- Operator.cs
- SessionStateSection.cs
- CallId.cs
- SchemaInfo.cs
- OptimisticConcurrencyException.cs
- SqlNode.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- AttributeEmitter.cs
- ChineseLunisolarCalendar.cs
- MulticastIPAddressInformationCollection.cs
- ControlOperationInvoker.cs
- Accessible.cs
- DelegateHelpers.Generated.cs
- Visitor.cs
- TiffBitmapEncoder.cs
- AmbientProperties.cs
- DependencyPropertyChangedEventArgs.cs
- ControlBuilderAttribute.cs
- AttributeAction.cs
- ProvidePropertyAttribute.cs
- EdmProviderManifest.cs
- IDQuery.cs
- _StreamFramer.cs
- MailAddress.cs
- Win32SafeHandles.cs
- MetadataUtil.cs
- PrivateFontCollection.cs
- StateItem.cs
- DescendantOverDescendantQuery.cs
- Int32Collection.cs
- _NetworkingPerfCounters.cs
- SymbolType.cs
- ValidatedControlConverter.cs
- XmlnsDefinitionAttribute.cs
- ChineseLunisolarCalendar.cs
- KnownAssembliesSet.cs
- localization.cs
- DesignerTextViewAdapter.cs
- TypeUtil.cs
- AnnotationComponentChooser.cs
- SessionStateModule.cs
- FrameworkObject.cs
- CellLabel.cs
- Misc.cs
- ComplexPropertyEntry.cs
- ValueTypePropertyReference.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- ReflectTypeDescriptionProvider.cs
- AttachmentCollection.cs
- MetaForeignKeyColumn.cs
- BufferedMessageData.cs
- ToolboxDataAttribute.cs
- IDQuery.cs
- ActivationService.cs
- ImageInfo.cs
- Rect3DConverter.cs
- ADMembershipUser.cs