Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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; } } }
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- NumericUpDown.cs
- IDispatchConstantAttribute.cs
- EntityModelSchemaGenerator.cs
- StreamReader.cs
- StreamUpdate.cs
- CompilationLock.cs
- LeafCellTreeNode.cs
- FontStyleConverter.cs
- WsdlInspector.cs
- SystemIPv4InterfaceProperties.cs
- PolyBezierSegmentFigureLogic.cs
- EntityTypeEmitter.cs
- AnimationClock.cs
- ContentControl.cs
- SmiSettersStream.cs
- XmlSchemaSimpleType.cs
- CompositeDuplexBindingElementImporter.cs
- ScrollViewerAutomationPeer.cs
- Stopwatch.cs
- NameNode.cs
- ReliableMessagingVersion.cs
- ExpandoClass.cs
- ResourceCategoryAttribute.cs
- BaseAsyncResult.cs
- TextSegment.cs
- TraceRecord.cs
- InternalResources.cs
- PageAdapter.cs
- ReachPageContentCollectionSerializerAsync.cs
- DataGridHeaderBorder.cs
- FontStyles.cs
- Floater.cs
- ControlCachePolicy.cs
- wgx_commands.cs
- UserPreferenceChangedEventArgs.cs
- ConversionContext.cs
- DictionaryChange.cs
- Configuration.cs
- TableColumnCollectionInternal.cs
- FileDialogCustomPlace.cs
- x509utils.cs
- WebPartEditorCancelVerb.cs
- HostSecurityManager.cs
- WsrmFault.cs
- CodeIdentifiers.cs
- HyperLinkColumn.cs
- RepeatInfo.cs
- NativeMethods.cs
- IdentityHolder.cs
- InternalPermissions.cs
- ContractUtils.cs
- TransportSecurityProtocol.cs
- SqlAliaser.cs
- HttpTransportBindingElement.cs
- DataServiceQuery.cs
- KeyValueSerializer.cs
- BinHexDecoder.cs
- FilterableAttribute.cs
- basevalidator.cs
- ConditionalBranch.cs
- EndpointAddress10.cs
- EntityTypeEmitter.cs
- AnnotationAuthorChangedEventArgs.cs
- QilExpression.cs
- Select.cs
- MultiViewDesigner.cs
- XmlChildNodes.cs
- ApplicationFileParser.cs
- TypeTypeConverter.cs
- StatusBarDrawItemEvent.cs
- Win32.cs
- ConnectionStringsExpressionEditor.cs
- XmlQueryRuntime.cs
- SimpleApplicationHost.cs
- UrlPropertyAttribute.cs
- WindowsAltTab.cs
- ClientEventManager.cs
- InputLanguageCollection.cs
- TextContainer.cs
- JournalEntryListConverter.cs
- PropertyFilter.cs
- RawAppCommandInputReport.cs
- PrimarySelectionGlyph.cs
- NTAccount.cs
- MutexSecurity.cs
- Registry.cs
- XmlDeclaration.cs
- NavigatorOutput.cs
- ResourceDictionary.cs
- ElementMarkupObject.cs
- AutoGeneratedFieldProperties.cs
- TypeBrowser.xaml.cs
- LineProperties.cs
- XsltFunctions.cs
- ImageAnimator.cs
- DrawingImage.cs
- DetailsViewInsertEventArgs.cs
- DynamicMetaObject.cs
- ToolStripDesignerAvailabilityAttribute.cs
- DataGridLength.cs