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
- FieldNameLookup.cs
- FileVersion.cs
- HwndSourceParameters.cs
- PasswordTextContainer.cs
- ActivityTrace.cs
- Ref.cs
- DataViewManager.cs
- UrlMappingsModule.cs
- BulletChrome.cs
- WebScriptMetadataFormatter.cs
- SystemPens.cs
- EnumConverter.cs
- CellConstant.cs
- DataObject.cs
- SchemaImporter.cs
- ObjectDataSourceEventArgs.cs
- EpmSourcePathSegment.cs
- AppDomainFactory.cs
- EventMemberCodeDomSerializer.cs
- SystemPens.cs
- DbTypeMap.cs
- StateElementCollection.cs
- ReferenceConverter.cs
- DomainUpDown.cs
- BinaryParser.cs
- DescendantBaseQuery.cs
- SmtpAuthenticationManager.cs
- ProfessionalColors.cs
- NumericUpDownAcceleration.cs
- Int16Converter.cs
- PropertyTab.cs
- WindowsStartMenu.cs
- GatewayDefinition.cs
- LogSwitch.cs
- StringSource.cs
- ButtonColumn.cs
- OleDbEnumerator.cs
- ExeConfigurationFileMap.cs
- MatchingStyle.cs
- LocalTransaction.cs
- TrustManagerPromptUI.cs
- ObjectListSelectEventArgs.cs
- ContainerParaClient.cs
- StringFormat.cs
- MaskPropertyEditor.cs
- WindowsButton.cs
- FileLoadException.cs
- JulianCalendar.cs
- EnterpriseServicesHelper.cs
- IndentedWriter.cs
- Margins.cs
- XmlSchemaProviderAttribute.cs
- KeyManager.cs
- Empty.cs
- NamespaceInfo.cs
- PersonalizableTypeEntry.cs
- FlowLayout.cs
- NamespaceCollection.cs
- OptimizedTemplateContentHelper.cs
- TypedReference.cs
- ProgressiveCrcCalculatingStream.cs
- RemoteWebConfigurationHostServer.cs
- ActivationServices.cs
- MdiWindowListStrip.cs
- Int32Converter.cs
- SqlIdentifier.cs
- TransactionsSectionGroup.cs
- ListChangedEventArgs.cs
- FormatConvertedBitmap.cs
- ExtenderProvidedPropertyAttribute.cs
- DispatcherHookEventArgs.cs
- SqlWebEventProvider.cs
- EncryptedData.cs
- TrustManagerPromptUI.cs
- Label.cs
- AttachmentService.cs
- InternalDispatchObject.cs
- CodeStatement.cs
- BasicHttpMessageSecurity.cs
- PropertySegmentSerializationProvider.cs
- StsCommunicationException.cs
- XmlSerializationReader.cs
- ExpressionLexer.cs
- ReadOnlyDictionary.cs
- FontDialog.cs
- DataBoundLiteralControl.cs
- ConsoleCancelEventArgs.cs
- StreamProxy.cs
- BitmapImage.cs
- Math.cs
- SecurityVerifiedMessage.cs
- FileNotFoundException.cs
- CqlGenerator.cs
- AtomParser.cs
- DbConnectionStringBuilder.cs
- TypeConverterAttribute.cs
- AxImporter.cs
- XamlClipboardData.cs
- _emptywebproxy.cs
- XmlToDatasetMap.cs