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
- FlowDocumentFormatter.cs
- ProcessExitedException.cs
- NamedPermissionSet.cs
- Brush.cs
- DataColumnMappingCollection.cs
- ContainerParagraph.cs
- glyphs.cs
- BooleanFacetDescriptionElement.cs
- errorpatternmatcher.cs
- AudioSignalProblemOccurredEventArgs.cs
- SeekStoryboard.cs
- FormViewPageEventArgs.cs
- XPathNavigatorReader.cs
- DataMisalignedException.cs
- XmlSignatureManifest.cs
- HttpResponseInternalWrapper.cs
- PersistenceMetadataNamespace.cs
- UnionCodeGroup.cs
- DetailsViewDeletedEventArgs.cs
- PointHitTestResult.cs
- SocketException.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- ObjectDataSourceEventArgs.cs
- ToolStripItemTextRenderEventArgs.cs
- ValidationRuleCollection.cs
- ClientCultureInfo.cs
- MetadataPropertyAttribute.cs
- FileReservationCollection.cs
- SqlConnectionPoolProviderInfo.cs
- UnsafeNativeMethods.cs
- FrameworkElementFactoryMarkupObject.cs
- GenerateScriptTypeAttribute.cs
- ResourceIDHelper.cs
- PrtTicket_Public_Simple.cs
- XmlILIndex.cs
- SafeCryptoHandles.cs
- PolicyManager.cs
- TextParagraphView.cs
- XmlDomTextWriter.cs
- NativeMethods.cs
- TriggerActionCollection.cs
- UnicodeEncoding.cs
- Int32.cs
- XmlSerializationGeneratedCode.cs
- AssemblyResourceLoader.cs
- ReadWriteObjectLock.cs
- ArraySortHelper.cs
- X509ClientCertificateCredentialsElement.cs
- Header.cs
- XPathMultyIterator.cs
- DialogDivider.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- SmiXetterAccessMap.cs
- XmlSchemaNotation.cs
- ProfileSettingsCollection.cs
- FillBehavior.cs
- InputLanguageProfileNotifySink.cs
- EntitySqlException.cs
- XmlConvert.cs
- BinaryExpression.cs
- RemotingConfigParser.cs
- DocumentGrid.cs
- UpdateExpressionVisitor.cs
- SizeAnimationBase.cs
- DataGridViewColumnHeaderCell.cs
- DeploymentSection.cs
- DeviceContext2.cs
- ExecutionEngineException.cs
- DesignerActionMethodItem.cs
- OleDbTransaction.cs
- FlowLayout.cs
- ParserContext.cs
- SqlGenericUtil.cs
- UIHelper.cs
- AdRotatorDesigner.cs
- PasswordTextContainer.cs
- DataContractJsonSerializer.cs
- Helpers.cs
- TemplateBindingExpressionConverter.cs
- GraphicsContext.cs
- SchemaMapping.cs
- UInt32Converter.cs
- Variable.cs
- HttpApplicationStateBase.cs
- Debugger.cs
- DocumentPageViewAutomationPeer.cs
- IPEndPointCollection.cs
- EventRoute.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- FileVersion.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- XmlSchemaSimpleTypeUnion.cs
- SiteMapProvider.cs
- TranslateTransform.cs
- XmlDataDocument.cs
- Mapping.cs
- TransformerInfo.cs
- SafeBitVector32.cs
- SettingsPropertyWrongTypeException.cs
- UriTemplateMatchException.cs