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
- FileDialog_Vista_Interop.cs
- Stackframe.cs
- ForwardPositionQuery.cs
- NGCSerializationManager.cs
- UIElementIsland.cs
- SafeNativeMethods.cs
- XmlBinaryReaderSession.cs
- OdbcConnectionOpen.cs
- PolicyUnit.cs
- CompositeScriptReference.cs
- ReferencedAssemblyResolver.cs
- TableLayoutStyle.cs
- LineGeometry.cs
- TreeNodeBinding.cs
- LogEntrySerializer.cs
- sortedlist.cs
- CryptoProvider.cs
- Size3DValueSerializer.cs
- Exceptions.cs
- DecimalStorage.cs
- PriorityBinding.cs
- RepeaterItem.cs
- __Filters.cs
- HMACMD5.cs
- KnowledgeBase.cs
- RoleGroupCollection.cs
- DbProviderServices.cs
- BitmapMetadataEnumerator.cs
- NameValuePermission.cs
- HtmlInputText.cs
- CodeBinaryOperatorExpression.cs
- SizeIndependentAnimationStorage.cs
- WebServiceParameterData.cs
- CompressionTransform.cs
- SingleKeyFrameCollection.cs
- XPathAncestorIterator.cs
- DataServiceResponse.cs
- RepeatInfo.cs
- PtsHelper.cs
- Effect.cs
- XmlElementCollection.cs
- ConnectionPoolManager.cs
- UrlAuthFailedErrorFormatter.cs
- CollectionsUtil.cs
- SafeTokenHandle.cs
- SqlComparer.cs
- SRef.cs
- SafeNativeMethods.cs
- CellParagraph.cs
- PerformanceCounterManager.cs
- Misc.cs
- TemplateBindingExtensionConverter.cs
- SystemUnicastIPAddressInformation.cs
- ActiveXHost.cs
- FlatButtonAppearance.cs
- UInt64Storage.cs
- OutputCacheProfile.cs
- Policy.cs
- WebControlAdapter.cs
- Switch.cs
- DocumentXPathNavigator.cs
- TableRow.cs
- ValueChangedEventManager.cs
- IPPacketInformation.cs
- CipherData.cs
- GenericTypeParameterBuilder.cs
- TextDecoration.cs
- QilTernary.cs
- NetSectionGroup.cs
- _NativeSSPI.cs
- OutputBuffer.cs
- PartialArray.cs
- _UriSyntax.cs
- EdmFunctions.cs
- AttributeData.cs
- CodeCompileUnit.cs
- ToolboxDataAttribute.cs
- BuildProviderCollection.cs
- DecimalAnimation.cs
- HttpContext.cs
- UIPermission.cs
- EmbeddedObject.cs
- connectionpool.cs
- BaseContextMenu.cs
- RefType.cs
- SHA384.cs
- ConstraintEnumerator.cs
- UIntPtr.cs
- TabPanel.cs
- CharUnicodeInfo.cs
- StylusLogic.cs
- AppDomain.cs
- SspiSafeHandles.cs
- FSWPathEditor.cs
- SessionPageStateSection.cs
- WebControlsSection.cs
- CompilerGeneratedAttribute.cs
- SmiGettersStream.cs
- Trace.cs
- NavigatorOutput.cs