Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- TabPage.cs
- InstanceDataCollection.cs
- ApplicationManager.cs
- CorePropertiesFilter.cs
- GrammarBuilderWildcard.cs
- PrivilegeNotHeldException.cs
- WebPartExportVerb.cs
- ManipulationStartingEventArgs.cs
- VectorCollection.cs
- PersonalizationProviderCollection.cs
- HtmlInputRadioButton.cs
- WindowsRichEdit.cs
- SessionEndingCancelEventArgs.cs
- AttributeEmitter.cs
- NameObjectCollectionBase.cs
- JsonCollectionDataContract.cs
- ConfigPathUtility.cs
- CapabilitiesRule.cs
- ListViewPagedDataSource.cs
- EventProvider.cs
- DesignerActionService.cs
- ConnectionManagementElement.cs
- MetaChildrenColumn.cs
- TimeSpanValidator.cs
- InkCanvasInnerCanvas.cs
- NativeMethods.cs
- ReflectionHelper.cs
- WebPartConnectionsConfigureVerb.cs
- BlurBitmapEffect.cs
- PagesChangedEventArgs.cs
- ListViewItem.cs
- HelpEvent.cs
- ArraySortHelper.cs
- DbConnectionPoolIdentity.cs
- DataContractJsonSerializer.cs
- MediaElementAutomationPeer.cs
- PackageRelationshipSelector.cs
- SchemaElementLookUpTable.cs
- SourceFilter.cs
- XsltException.cs
- ProcessStartInfo.cs
- InvalidWMPVersionException.cs
- MarginCollapsingState.cs
- GiveFeedbackEventArgs.cs
- TempFiles.cs
- recordstate.cs
- CmsInterop.cs
- NegotiateStream.cs
- TextBoxBase.cs
- LeafCellTreeNode.cs
- QueueSurrogate.cs
- Visitors.cs
- MetadataFile.cs
- CatalogPartChrome.cs
- _NtlmClient.cs
- UpdatePanelTriggerCollection.cs
- GradientStopCollection.cs
- UnsafeNativeMethodsMilCoreApi.cs
- DataGridViewHeaderCell.cs
- GenericWebPart.cs
- ClientSettingsStore.cs
- AnnotationHighlightLayer.cs
- HyperLinkStyle.cs
- OwnerDrawPropertyBag.cs
- BaseProcessProtocolHandler.cs
- Faults.cs
- AliasedSlot.cs
- DataGridViewComboBoxEditingControl.cs
- DataGridTableCollection.cs
- TcpSocketManager.cs
- DoubleConverter.cs
- XmlSchemaSet.cs
- TextEffectCollection.cs
- GradientBrush.cs
- HtmlHead.cs
- ResXDataNode.cs
- TypeAccessException.cs
- formatter.cs
- GetIsBrowserClientRequest.cs
- PopupControlService.cs
- UnionExpr.cs
- RuleSetReference.cs
- Crypto.cs
- ListQueryResults.cs
- Stopwatch.cs
- Thumb.cs
- XmlHierarchicalEnumerable.cs
- TextReader.cs
- ExpressionBindingCollection.cs
- MetafileHeaderWmf.cs
- TdsParserSessionPool.cs
- WriterOutput.cs
- RadioButtonStandardAdapter.cs
- MSAANativeProvider.cs
- AssociationProvider.cs
- SBCSCodePageEncoding.cs
- ConnectionPointCookie.cs
- ReadOnlyCollectionBase.cs
- COM2ExtendedUITypeEditor.cs
- SafeEventLogWriteHandle.cs