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
- SessionStateSection.cs
- PageThemeParser.cs
- ElementsClipboardData.cs
- HGlobalSafeHandle.cs
- TreeNode.cs
- WebServiceEnumData.cs
- Vector3D.cs
- RegionIterator.cs
- TableRowCollection.cs
- CancellationHandlerDesigner.cs
- WebBrowserHelper.cs
- TrackingRecord.cs
- DataControlImageButton.cs
- ToolStripProgressBar.cs
- PriorityRange.cs
- ObjectListDesigner.cs
- ConvertBinder.cs
- CustomLineCap.cs
- DBProviderConfigurationHandler.cs
- SystemIcons.cs
- DataGridViewLinkCell.cs
- DesignerLoader.cs
- HandlerFactoryWrapper.cs
- HuffCodec.cs
- RadioButtonDesigner.cs
- ZipArchive.cs
- TransactionContext.cs
- PropertyInformation.cs
- Thumb.cs
- Stopwatch.cs
- Compiler.cs
- Focus.cs
- StyleHelper.cs
- XmlnsCompatibleWithAttribute.cs
- PointCollection.cs
- AndCondition.cs
- DependentList.cs
- EmptyControlCollection.cs
- QilExpression.cs
- ServicesUtilities.cs
- ScopeElement.cs
- regiisutil.cs
- WebPartCollection.cs
- HtmlButton.cs
- COM2PropertyPageUITypeConverter.cs
- BasicCellRelation.cs
- XmlSchemaSimpleTypeList.cs
- DrawingBrush.cs
- PersonalizableTypeEntry.cs
- ToolStripHighContrastRenderer.cs
- PackagingUtilities.cs
- TemplateBindingExtensionConverter.cs
- Vector.cs
- SchemaImporterExtensionElement.cs
- ToolStripLabel.cs
- ControlTemplate.cs
- DateTimeConverter2.cs
- behaviorssection.cs
- PropertyValueChangedEvent.cs
- QueryResults.cs
- CopyNodeSetAction.cs
- HtmlTitle.cs
- GeneratedCodeAttribute.cs
- Int32KeyFrameCollection.cs
- AstTree.cs
- ObjectPersistData.cs
- HtmlShimManager.cs
- DomainUpDown.cs
- DayRenderEvent.cs
- TCPListener.cs
- LinqDataSourceView.cs
- PermissionRequestEvidence.cs
- BitStream.cs
- TextEditor.cs
- XPathScanner.cs
- ExecutionContext.cs
- EntityConnection.cs
- HiddenField.cs
- NullPackagingPolicy.cs
- RequestDescription.cs
- BypassElementCollection.cs
- Console.cs
- ProviderIncompatibleException.cs
- ListViewTableRow.cs
- DeclarativeCatalogPart.cs
- ClientType.cs
- AnnouncementService.cs
- MULTI_QI.cs
- HelloOperationAsyncResult.cs
- SystemTcpStatistics.cs
- SqlCacheDependency.cs
- ADConnectionHelper.cs
- CategoryNameCollection.cs
- DebuggerAttributes.cs
- TypedTableBase.cs
- TemplateNameScope.cs
- CodeAccessSecurityEngine.cs
- RadioButtonStandardAdapter.cs
- RepeatEnumerable.cs
- DataServiceProviderMethods.cs