Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- ConfigXmlAttribute.cs
- DataBoundControlDesigner.cs
- TableDetailsRow.cs
- StatementContext.cs
- ClickablePoint.cs
- EndOfStreamException.cs
- ByteStack.cs
- SiteMapDesignerDataSourceView.cs
- UrlPath.cs
- PackageRelationshipSelector.cs
- SerializationTrace.cs
- OracleMonthSpan.cs
- GcSettings.cs
- basevalidator.cs
- CacheAxisQuery.cs
- TextBreakpoint.cs
- DrawingAttributeSerializer.cs
- WasAdminWrapper.cs
- HybridObjectCache.cs
- ProfileParameter.cs
- ManagementDateTime.cs
- ColorPalette.cs
- SelectionItemProviderWrapper.cs
- Cursor.cs
- CommandID.cs
- CrossAppDomainChannel.cs
- GraphicsContext.cs
- BasePattern.cs
- AssemblyName.cs
- PropertyTabChangedEvent.cs
- ClientScriptItemCollection.cs
- Panel.cs
- XsltContext.cs
- DateTimeConverter2.cs
- ComboBoxAutomationPeer.cs
- ManipulationDevice.cs
- DataDocumentXPathNavigator.cs
- TextBoxRenderer.cs
- Soap.cs
- WizardSideBarListControlItem.cs
- PasswordBoxAutomationPeer.cs
- QueryOutputWriterV1.cs
- TextClipboardData.cs
- PlatformNotSupportedException.cs
- TemplateFactory.cs
- TemplatePartAttribute.cs
- Convert.cs
- TrackBar.cs
- ErrorFormatterPage.cs
- ChameleonKey.cs
- CommonRemoteMemoryBlock.cs
- WindowsPrincipal.cs
- CodeCatchClauseCollection.cs
- XamlSerializationHelper.cs
- BrowserDefinitionCollection.cs
- ImplicitInputBrush.cs
- ScriptResourceAttribute.cs
- InvokePattern.cs
- DurableErrorHandler.cs
- PinnedBufferMemoryStream.cs
- MobileContainerDesigner.cs
- WindowVisualStateTracker.cs
- TextEffect.cs
- DeferrableContent.cs
- SystemIPGlobalStatistics.cs
- IPAddressCollection.cs
- ByteStack.cs
- URLEditor.cs
- FlowLayout.cs
- QueryCacheEntry.cs
- NamespaceImport.cs
- DescendentsWalker.cs
- GlyphCache.cs
- SerializableAttribute.cs
- MissingMethodException.cs
- RotateTransform3D.cs
- ContainerUtilities.cs
- ReaderOutput.cs
- CriticalFinalizerObject.cs
- RootNamespaceAttribute.cs
- WeakReferenceList.cs
- COM2ComponentEditor.cs
- IUnknownConstantAttribute.cs
- XhtmlBasicCalendarAdapter.cs
- Visitor.cs
- ToolZone.cs
- LoadGrammarCompletedEventArgs.cs
- CreateUserWizard.cs
- XamlTypeMapperSchemaContext.cs
- InkCanvas.cs
- FontDifferentiator.cs
- TitleStyle.cs
- DataObjectFieldAttribute.cs
- Propagator.JoinPropagator.cs
- DataControlCommands.cs
- TraceHandlerErrorFormatter.cs
- FactoryId.cs
- HttpListenerException.cs
- VersionedStream.cs
- XmlSerializerSection.cs