Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Net / System / _UriTypeConverter.cs / 1305376 / _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
- SqlDependencyListener.cs
- PropertyMappingExceptionEventArgs.cs
- NameHandler.cs
- TableLayoutCellPaintEventArgs.cs
- SubstitutionList.cs
- LinqDataSourceHelper.cs
- objectquery_tresulttype.cs
- PrimaryKeyTypeConverter.cs
- FileDialogCustomPlaces.cs
- SystemIcmpV6Statistics.cs
- ProcessHostFactoryHelper.cs
- HtmlInputReset.cs
- QueryOptionExpression.cs
- EventLogPermissionEntryCollection.cs
- DateTimeFormatInfoScanner.cs
- Compiler.cs
- Rect3DValueSerializer.cs
- Brush.cs
- MenuBase.cs
- VariableQuery.cs
- FontDialog.cs
- WebBrowsableAttribute.cs
- DispatcherHookEventArgs.cs
- PropertyInformationCollection.cs
- RefreshPropertiesAttribute.cs
- TreeNodeCollection.cs
- AdapterDictionary.cs
- TypedRowHandler.cs
- OdbcConnectionPoolProviderInfo.cs
- EventPrivateKey.cs
- UrlAuthorizationModule.cs
- CommandDevice.cs
- TextParagraphView.cs
- FontFamilyConverter.cs
- BuildProvider.cs
- XmlSchemaSubstitutionGroup.cs
- EventWaitHandle.cs
- BindingListCollectionView.cs
- SettingsProviderCollection.cs
- VisualBrush.cs
- ComponentEditorPage.cs
- SystemIPGlobalProperties.cs
- TableAutomationPeer.cs
- DetailsViewInsertedEventArgs.cs
- ArrayTypeMismatchException.cs
- HostedImpersonationContext.cs
- OraclePermissionAttribute.cs
- XslException.cs
- ConstraintConverter.cs
- TabControl.cs
- SystemInfo.cs
- HttpProfileGroupBase.cs
- ConfigXmlWhitespace.cs
- ResourceReader.cs
- PersonalizationDictionary.cs
- StyleBamlTreeBuilder.cs
- TabControl.cs
- HandlerWithFactory.cs
- Light.cs
- DocumentPaginator.cs
- SessionIDManager.cs
- sqlstateclientmanager.cs
- QilInvokeLateBound.cs
- OdbcConnectionFactory.cs
- UpdateExpressionVisitor.cs
- StructuredTypeEmitter.cs
- RouteCollection.cs
- TextEditorLists.cs
- StyleSheetRefUrlEditor.cs
- UndoEngine.cs
- DataPagerFieldItem.cs
- ImplicitInputBrush.cs
- BitmapScalingModeValidation.cs
- TableAutomationPeer.cs
- AssemblyHash.cs
- SecondaryIndexList.cs
- ReferenceAssemblyAttribute.cs
- OutputCacheModule.cs
- HttpListener.cs
- GroupItemAutomationPeer.cs
- webeventbuffer.cs
- TagNameToTypeMapper.cs
- ConfigXmlWhitespace.cs
- InstanceData.cs
- InputProcessorProfiles.cs
- WebScriptClientGenerator.cs
- DateTimeConverter.cs
- MetadataArtifactLoaderCompositeResource.cs
- ToolboxDataAttribute.cs
- MethodRental.cs
- NoPersistHandle.cs
- WebPartZoneDesigner.cs
- ConsoleTraceListener.cs
- MouseActionValueSerializer.cs
- Point3DCollection.cs
- Guid.cs
- CollectionTypeElement.cs
- WriteLine.cs
- CursorConverter.cs
- WebPartsPersonalization.cs