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
- EventInfo.cs
- MeasureItemEvent.cs
- InternalBufferManager.cs
- HierarchicalDataSourceControl.cs
- DefaultBindingPropertyAttribute.cs
- ButtonStandardAdapter.cs
- PagesChangedEventArgs.cs
- UnauthorizedAccessException.cs
- GeneralTransform3D.cs
- SqlSelectStatement.cs
- HttpCookiesSection.cs
- BaseUriHelper.cs
- WindowsListViewItem.cs
- ProfessionalColorTable.cs
- ValueSerializer.cs
- BamlBinaryReader.cs
- SessionState.cs
- CachedPathData.cs
- MarkupCompilePass1.cs
- VirtualPathUtility.cs
- base64Transforms.cs
- Point3DKeyFrameCollection.cs
- TempEnvironment.cs
- FilteredXmlReader.cs
- xdrvalidator.cs
- AdRotator.cs
- RSAPKCS1SignatureFormatter.cs
- DataControlLinkButton.cs
- FolderLevelBuildProviderCollection.cs
- ToolStripLabel.cs
- ArraySegment.cs
- DSASignatureDeformatter.cs
- ImportContext.cs
- AdPostCacheSubstitution.cs
- PassportPrincipal.cs
- DocumentAutomationPeer.cs
- RowToFieldTransformer.cs
- XmlUtf8RawTextWriter.cs
- PropertyPushdownHelper.cs
- CustomCategoryAttribute.cs
- TreeNodeStyleCollection.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- MenuItemCollectionEditorDialog.cs
- XPathMultyIterator.cs
- PerformanceCounterCategory.cs
- _ConnectionGroup.cs
- FontStyles.cs
- CodeMethodInvokeExpression.cs
- KeyPressEvent.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- GridViewRowCollection.cs
- StoreItemCollection.cs
- WindowsFormsSectionHandler.cs
- QuaternionAnimation.cs
- SmtpLoginAuthenticationModule.cs
- DecoderFallback.cs
- MemberNameValidator.cs
- Rect3DValueSerializer.cs
- MetaTableHelper.cs
- _StreamFramer.cs
- UnsafeNativeMethods.cs
- SizeChangedInfo.cs
- DataGridClipboardCellContent.cs
- InputMethod.cs
- ImageFormat.cs
- Perspective.cs
- TypeSystem.cs
- GroupBoxRenderer.cs
- HtmlTextArea.cs
- XmlSchemaRedefine.cs
- UnaryNode.cs
- DataBindingExpressionBuilder.cs
- WindowsHyperlink.cs
- XmlQueryType.cs
- SecurityTokenProvider.cs
- AuthenticationSection.cs
- MemberInfoSerializationHolder.cs
- XmlSerializerFactory.cs
- Int32.cs
- InternalDuplexChannelFactory.cs
- __TransparentProxy.cs
- ExceptionNotification.cs
- ExpressionBindings.cs
- SkipQueryOptionExpression.cs
- QueryAccessibilityHelpEvent.cs
- RequestCacheManager.cs
- TypedElement.cs
- ImageSourceValueSerializer.cs
- String.cs
- DistributedTransactionPermission.cs
- XmlText.cs
- Scene3D.cs
- Html32TextWriter.cs
- MorphHelpers.cs
- CharConverter.cs
- OpCodes.cs
- DataGridTable.cs
- CombinedHttpChannel.cs
- IndexingContentUnit.cs
- ActiveXHelper.cs