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
- TextFindEngine.cs
- SubMenuStyleCollection.cs
- GuidTagList.cs
- DivideByZeroException.cs
- PinnedBufferMemoryStream.cs
- ObjectComplexPropertyMapping.cs
- RawStylusActions.cs
- GridItemPattern.cs
- LogicalExpr.cs
- ProgressBar.cs
- MimeFormatExtensions.cs
- HtmlFormWrapper.cs
- DataPagerFieldItem.cs
- PingOptions.cs
- ObjectParameterCollection.cs
- DefaultProfileManager.cs
- IPEndPointCollection.cs
- Line.cs
- MenuAdapter.cs
- SchemaType.cs
- InProcStateClientManager.cs
- Stroke2.cs
- PeerCollaborationPermission.cs
- HtmlEmptyTagControlBuilder.cs
- CompensationHandlingFilter.cs
- ColumnResizeUndoUnit.cs
- StringValueSerializer.cs
- DelayDesigner.cs
- StringUtil.cs
- UrlAuthFailedErrorFormatter.cs
- UnauthorizedAccessException.cs
- PropertyItem.cs
- LinkLabel.cs
- SettingsPropertyCollection.cs
- EmptyEnumerator.cs
- EventTrigger.cs
- FolderBrowserDialog.cs
- QilGeneratorEnv.cs
- TextRangeEditLists.cs
- MsmqIntegrationBindingElement.cs
- OuterGlowBitmapEffect.cs
- Rss20ItemFormatter.cs
- MembershipPasswordException.cs
- ToolboxComponentsCreatedEventArgs.cs
- BitmapPalette.cs
- XmlMembersMapping.cs
- WebServiceEnumData.cs
- CompositeControl.cs
- WinEventWrap.cs
- MailWriter.cs
- ToggleProviderWrapper.cs
- XmlSerializationGeneratedCode.cs
- MsmqInputSessionChannel.cs
- CardSpaceException.cs
- XmlSchemaRedefine.cs
- DbDeleteCommandTree.cs
- BitmapCacheBrush.cs
- PeerIPHelper.cs
- VarRefManager.cs
- AttributeCollection.cs
- NativeMethods.cs
- DataGridViewColumnCollection.cs
- UiaCoreProviderApi.cs
- ObjectTag.cs
- TaskExceptionHolder.cs
- While.cs
- StyleCollectionEditor.cs
- _DisconnectOverlappedAsyncResult.cs
- MSAAWinEventWrap.cs
- RectIndependentAnimationStorage.cs
- RootContext.cs
- BitmapEffectvisualstate.cs
- PageAdapter.cs
- UrlAuthorizationModule.cs
- WebPartEditorOkVerb.cs
- HttpRawResponse.cs
- ToolStripContextMenu.cs
- HTMLTagNameToTypeMapper.cs
- QueryStringParameter.cs
- CodeNamespaceCollection.cs
- DocumentPageHost.cs
- DragDrop.cs
- PerformanceCounterPermissionEntry.cs
- DesignerTransaction.cs
- RangeValidator.cs
- _OverlappedAsyncResult.cs
- DllNotFoundException.cs
- Trace.cs
- ProcessModelSection.cs
- MSAAEventDispatcher.cs
- UnicodeEncoding.cs
- PageCatalogPartDesigner.cs
- CustomCategoryAttribute.cs
- COAUTHINFO.cs
- MasterPage.cs
- CollectionMarkupSerializer.cs
- InkCollectionBehavior.cs
- SerialReceived.cs
- DataKey.cs
- ToolStripComboBox.cs