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
- KeyValueSerializer.cs
- FixedTextContainer.cs
- MetadataImporter.cs
- LogExtentCollection.cs
- WebPartConnectionsCancelEventArgs.cs
- TraceContextRecord.cs
- InkSerializer.cs
- ToolStripOverflow.cs
- SchemaImporter.cs
- LoadMessageLogger.cs
- ThreadSafeList.cs
- Comparer.cs
- DataGridParentRows.cs
- BmpBitmapDecoder.cs
- Point3DCollection.cs
- DoubleUtil.cs
- DirtyTextRange.cs
- GCHandleCookieTable.cs
- HttpServerVarsCollection.cs
- RegistryKey.cs
- ProcessStartInfo.cs
- ImageResources.Designer.cs
- ContentDisposition.cs
- ETagAttribute.cs
- FormattedTextSymbols.cs
- BamlTreeUpdater.cs
- HMAC.cs
- OdbcCommand.cs
- DataPagerFieldItem.cs
- LOSFormatter.cs
- SQLDouble.cs
- AssemblyResourceLoader.cs
- Region.cs
- LowerCaseStringConverter.cs
- Interlocked.cs
- UnknownBitmapDecoder.cs
- MenuCommand.cs
- AutoGeneratedFieldProperties.cs
- MobileControl.cs
- TextTreeRootNode.cs
- EntityWrapperFactory.cs
- RoleGroup.cs
- SystemDiagnosticsSection.cs
- DataGridPagerStyle.cs
- BaseTemplateParser.cs
- InstanceCreationEditor.cs
- ObjectViewListener.cs
- NumberSubstitution.cs
- BordersPage.cs
- dtdvalidator.cs
- PaperSize.cs
- Style.cs
- AttributeQuery.cs
- UnsafeNativeMethods.cs
- CharUnicodeInfo.cs
- ObjectHandle.cs
- DrawingServices.cs
- InkCanvas.cs
- ObjectListFieldCollection.cs
- AccessorTable.cs
- WindowsNonControl.cs
- Identity.cs
- OdbcRowUpdatingEvent.cs
- util.cs
- SerializationIncompleteException.cs
- Deserializer.cs
- ChildrenQuery.cs
- WhitespaceRuleLookup.cs
- RegexMatchCollection.cs
- PageClientProxyGenerator.cs
- CounterCreationData.cs
- ListenerAdapter.cs
- XmlLinkedNode.cs
- Popup.cs
- HeaderLabel.cs
- CryptoProvider.cs
- DataGridViewColumnEventArgs.cs
- StorageAssociationTypeMapping.cs
- CorrelationManager.cs
- altserialization.cs
- SmiEventSink_Default.cs
- SymmetricKey.cs
- GZipDecoder.cs
- SparseMemoryStream.cs
- ReaderWriterLockSlim.cs
- SafeCoTaskMem.cs
- ItemContainerPattern.cs
- TrackingProfileDeserializationException.cs
- WindowsAltTab.cs
- InternalUserCancelledException.cs
- KerberosReceiverSecurityToken.cs
- ButtonField.cs
- XmlC14NWriter.cs
- TripleDES.cs
- Wow64ConfigurationLoader.cs
- XMLSchema.cs
- SourceItem.cs
- XmlSchemaSimpleContentRestriction.cs
- HttpModuleActionCollection.cs
- PropertyEntry.cs