Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- GlyphsSerializer.cs
- EraserBehavior.cs
- QueryTreeBuilder.cs
- Nodes.cs
- InfoCardSymmetricAlgorithm.cs
- SoapException.cs
- ResXBuildProvider.cs
- BatchParser.cs
- Menu.cs
- HitTestWithPointDrawingContextWalker.cs
- PanelStyle.cs
- AssemblyHash.cs
- OrderedDictionary.cs
- ObjectHandle.cs
- OutputCacheSettingsSection.cs
- PrintingPermission.cs
- _AutoWebProxyScriptWrapper.cs
- DefaultWorkflowSchedulerService.cs
- BitConverter.cs
- SqlGenerator.cs
- DbUpdateCommandTree.cs
- PointAnimation.cs
- Activator.cs
- WebConfigurationFileMap.cs
- Item.cs
- DataRowView.cs
- HtmlInputButton.cs
- NetworkCredential.cs
- SHA384Cng.cs
- EnterpriseServicesHelper.cs
- WhiteSpaceTrimStringConverter.cs
- XmlSchemaGroupRef.cs
- ScrollChrome.cs
- ImageSourceValueSerializer.cs
- DataStreamFromComStream.cs
- RegexInterpreter.cs
- Geometry.cs
- TreeViewImageKeyConverter.cs
- GeometryGroup.cs
- IUnknownConstantAttribute.cs
- TiffBitmapEncoder.cs
- DataGridViewAdvancedBorderStyle.cs
- GradientBrush.cs
- UnsafeNativeMethods.cs
- Typeface.cs
- OperationInfoBase.cs
- LayoutUtils.cs
- DataGridCaption.cs
- InvalidDataContractException.cs
- BinHexDecoder.cs
- MouseEventArgs.cs
- XhtmlBasicFormAdapter.cs
- TextDecorations.cs
- Popup.cs
- DocumentPageViewAutomationPeer.cs
- RoleBoolean.cs
- MailWebEventProvider.cs
- TextFormattingConverter.cs
- TextAction.cs
- ProfileModule.cs
- DataContext.cs
- Label.cs
- PolyLineSegment.cs
- EntityDesignerBuildProvider.cs
- XmlSiteMapProvider.cs
- PreservationFileReader.cs
- WeakReferenceEnumerator.cs
- ArgIterator.cs
- DiagnosticEventProvider.cs
- DesigntimeLicenseContext.cs
- CredentialCache.cs
- GestureRecognizer.cs
- Converter.cs
- XamlInt32CollectionSerializer.cs
- WebBrowserHelper.cs
- InputBuffer.cs
- RadioButtonPopupAdapter.cs
- DataGridViewColumnCollectionEditor.cs
- XmlNamespaceManager.cs
- ClientWindowsAuthenticationMembershipProvider.cs
- DispatcherObject.cs
- DbConnectionPoolOptions.cs
- SqlBooleanizer.cs
- StylusCaptureWithinProperty.cs
- RequestQueryProcessor.cs
- ComponentEditorPage.cs
- Container.cs
- CommentEmitter.cs
- StringResourceManager.cs
- StreamReader.cs
- IImplicitResourceProvider.cs
- SchemaImporterExtensionElement.cs
- DetailsView.cs
- IncrementalReadDecoders.cs
- DrawingContextWalker.cs
- DynamicValueConverter.cs
- Splitter.cs
- latinshape.cs
- SerializationSectionGroup.cs
- Filter.cs